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);
}
}

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1