2020.12.1
2020.12.1
1.变量的作用域和生命周期
1.1作用域
- 作用域是变量的使用范围
- 变量的作用域是指包含该变量的,离该变量最近的大括号
特殊情况:
(1)for循环的循环变量只能在for的循环体内部使用
(2)方法的形参只能在方法内部使用
1.2生命周期
变量的生命周期是指变量从分配内存到回收内存的过程。
1.3作用域和生命周期示例程序
2.字符串
字符是单引号引住的单个符号,例如char ch='&',字符在java中使用char类型表示。字符串是字符的序列,在java中使用String类表示字符串。String类被定义在java.lang包中。java.lang包由系统自动导入,因此该包中的类无需导入。
2.1字符和字符串的区别
(1)字符类型:char 使用单引号
字符串类型:String 使用双引号
(2)char类型是基本类型
String是引用类型
(3)char类型的变量中必须存储一个字符
String类型的变量中可以存放任意个数的字符
2.2字符串的使用场景
用户名,密码,地址,电话号码,文章的标题和内容......
2.3ASCII码
ASCII(American Standard Code for Information Interchange): 美国信息交换标准代码。可以交换的字符一共128个。这128个包括可见的字符(后96个)和不可见的字符(前32个)
示例:显示所有的ascii码
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 128; i++) {
System.out.println((i)+"="+(char)i);
}
}
}
ASCII是字符型和整型之间的交换。例如字符‘A’与整数65可以相互交换。
2.4字符串的两种使用方式
第一种:字面量,用双引号直接赋值的就是字面量
第二种:字符串对象,new的就是字符串对象
2.4.1字符串对象
如果要判断两个字符串内容是否相等,应该使用equals方法
如果要判断两个字符串对象是否指向到同一内存单元,应该使用==
2.4.2字面量
字面量在分配内存时,被分配在方法区,方法区中会独立出一块内存,专门用于存放字面量,java把单独存放字面量的内存称为字符串池。
2.4.3关于==和equals
(1)==是判断两个字符串变量的值是否相等
(2)equals是判断两个字符串指向的内存单元中的内容是否相同
在实际开发中判断两个字符串是否相同多数是判断两个字符串的内容是否一样,因此应该使用equals方法,而不能使用==。
2.5字符串常用的API
*返回类型* | *方法名称* | *作用* |
---|---|---|
boolean | equals(String) | 比较两个字符串是否相等 |
boolean | equalsIgnoreCase(String) | 忽略大小写比较两个字符串是否相等 |
int | length() | 获取字符串的长度 |
char | charAt(int) | 获取字符串中的一个字符 |
int | indexOf(String) | 判断传入字符串在原字符串中第一次出现的位置 |
int | lastIndexOf(String) | 判断传入字符串在原字符串中最后一次出现的位置 |
boolean | startsWith(String) | 判断原字符串是否以传入字符串开头 |
boolean | endsWith(String) | 判断原字符串是否以传入字符串结尾 |
int | compareTo(String) | 判断两个字符串的大小 |
String | toLowerCase() | 获取小写字符串 |
String | toUpperCase() | 获取大写字符串 |
String | substring(int) | 截取字符串,从传入参数位置开始截取到末尾 |
String | substring(int,int) | 截取字符串,从参数1位置开始截取到参数2位置 |
String | trim() | 去掉字符串首尾的空格 |
String[] | split(String) | 将原字符串按照传入参数分割为字符串数组 |
String | replace(String,String) | 将字符串中指定的内容替换成另外的内容 |
2.6字符串的连接
public static void main(String[] args) {
// TODO Auto-generated method stub
String firstname="曹";
String lastname="操";
String fullname=firstname+lastname;
System.out.println("姓名是:"+fullname);
// public static void main(String[] args) {
// String firstnameString="曹";
// String lastname="操";
// String fullname=firstname.concat(lastname);
// System.out.println("姓名是:"+fullname);
// }
}
}
2.7字符串的比较
示例1:
public static void main(String[] args) {
// TODO Auto-generated method stub
String school1="师范大学";
String school2="师范大学";
boolean isSame=school1.equals(school2);
System.out.println("两个学校是否相同的比较结果是"+isSame);
}
}
示例2(忽略大小写比较是否相同):
public static void main(String[] args) {
// TODO Auto-generated method stub
String username1="Leo Messi";
String username2="leo messi";
boolean isSame=username1.equalsIgnoreCase(username2);
System.out.println("两个用户名比较的结果是"+isSame);
}
}
2.8字符串的长度
示例:从键盘上输入用户名,对用户名进行验证,合法的用户名长度在6到20之间。如果在这区间,输出用户名长度合法,否则输出用户名长度不合法。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名");
String name=input.next();
if (name.length()>=6 && name.length()<=20) {
System.out.println("用户名长度合法");
}else {
System.out.println("用户名长度不合法");
}
}
2.9字符串的查找
示例:从键盘上输入email,对email进行验证,合法的email的条件是:
1.必须包含“@”和“.”
2.“@”必须在“.”前面
3.“@”只能出现一次
4.不能以“@”开头
5.不能以“.”结尾
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入Email");
String email=input.next();
email=email.toLowerCase();
int atIndex=email.indexOf("@");
int dotIndex=email.indexOf(".");
if (atIndex-1 || dotIndex-1) {
System.out.println("Email非法,不存在@或.");
return;
}
if (atIndex>dotIndex) {
System.out.println("Email非法,不允许@在.的后面");
return;
}
String array[]=email.split("@");
if (array.length!=2) {
System.out.println("Email非法,要求@有且只有一个");
return;
}
System.out.println("Email合法");
}
}
2.10字符串的内容替换
public static void main(String[] args) {
// TODO Auto-generated method stub
String content="你他娘的真是个天才";
content=content.replace("他娘的", "***");
System.out.println(content);
}
}
2.11字符串的截取
public static void main(String[] args) {
// TODO Auto-generated method stub
String path="C:\HTML\front\assents\img\pc\logo.png";
int startIndex=path.lastIndexOf("\");
int endIndex=path.lastIndexOf(".");
String fileName=path.substring(startIndex+1, endIndex);
System.out.println(path+"路径中的文件是:"+fileName);
}
}
评论留言