String str1 = "helloWorld";
String str2 = "helloWorld";
System.out.println(str1==str2);//true
- 双等号比较的是变量中保存的内存地址,在str1创建“helloWorld”时,字符串内存地址存在字符串常量池中,str2在创建“helloWorld”的字符串,直接从常量池中进行引用
String str1 = "helloWorld";
String str2 = new String("helloWorld");
System.out.println(str1==str2);//false
- 在str1创建“helloWorld”时,字符串内存地址存在字符串常量池中,str2是用new的方式创建字符串对象,被new创建的对象会在堆内存中开辟一个空间存放,两个对象内存地址不相同
String str1 = "helloWorld";
String str2 = new String("helloWorld");
System.out.println(str1.equals(str2));//true
- 采用equals()方法进行比较,String类已经重写了equals()方法,把str1和str2拆分为char数组一个一个字符进行比较
String str2 = null;
System.out.println("helloWorld".equals(str2));//false
- 使用equals()方法比较时,如果有变量值不能确定,建议把常量放在前面会避免空指针异常
String str1 = "helloWorld";
String str2 = "helloworld";
System.out.println(str1.equalsIgnoreCase(str2));//true
- 使用equalsIgnoreCase()方法,不区分大小写比较字符串
//1
String str1 = "a";
String str2 = "b";
System.out.println(str1.compareTo(str2));//-1
//2
String str1 = "b";
String str2 = "b";
System.out.println(str1.compareTo(str2));//0
//3
String str1 = "c";
String str2 = "b";
System.out.println(str1.compareTo(str2));//1
- 使用compareTo()方法,可以比较字符串的大小判断是否相等
- str1与str2进行比较 a的ASCII值是97, b的ASCII值是98 , 97-98=-1
- str1与str2进行比较 字符串都为b,故 98-98=0
- str1与str2进行比较 c的ASCII值是99, b的ASCII值是98 , 99-98=1
String str1 = "A";
String str2 = "b";
System.out.println(str1.compareToIgnoreCase(str2));//-1
String str1 = "B";
String str2 = "b";
System.out.println(str1.compareToIgnoreCase(str2));//0
String str1 = "C";
String str2 = "b";
System.out.println(str1.compareToIgnoreCase(str2));//1
- 使用compareToIgnoreCase()方法,不区分带小写比较字符串大小,判断是否相等