JAVA字符串

String是不可变字符串的原因

  • String变量每次的修改其实都是产生并指向了新的字符串对象。
  • 原来的字符串没有变,所以称为不可变字符。

创建方式

  • 方式一:
1
String name = "allen";
  • 方式二:通过String类的构造器创建对象。
    • public String() 创建空白字符串,几乎不用
    • public String(String original) 根据传入的字符串,创建字符对象, 几乎不用
    • public String(char[] chs) 根据字符数组创建
    • public String(byte[] chs) 根据字节数组创建

区别

  • 以 ”“ 方式给出的字符串对象,在字符串常量池中存储,相同的内容只存储一份。
  • 通过new构造的对象,每new一次都会产生一个新的对象,放在堆内存中。


String 常用 API

字符串比较

  • 推荐使用 “equals” :只关心内容一样即可。
  • “equalsIgnoreCase” 忽略大小写,看内容是否一致。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) {
// 1. 正确登录名和密码
String okName = "a";
String okPassword = "123456";

// 2. 请输入登录名称和密码
Scanner scanner = new Scanner(System.in);
System.out.println("登录名称:");
String name = scanner.next();
System.out.println("登录密码:");
String password = scanner.next();

// 3. 验证
if(okName.equals(name) && okPassword.equals(password)){
System.out.printf("登录成功");
}else{
System.out.println("登录失败");
}

// 4. 忽略大小写的比较API:一般用于比较验证码
String sysCode = "12Asd";
String code1 = "12asd";

System.out.println(sysCode.equals(code1)); // false
System.out.println(sysCode.equalsIgnoreCase(code1)); //true


}