Java中字符串比较特殊,它不是基本类型,直接使用 == 进行比较是否相等,大多时候不能达到预期结果,正确的方式是使用.equals()方法进行比较,接下来看代码演示,来理解:Java中如何比较字符串!
// 使用 == 符合预期的情况,原因:指向相同的内存地址
boolean bool = "val" == "val" ;
System.out.println(bool); // 输出:true
// 使用 == 符合预期的情况,原因:指向相同的内存地址
boolean bool = "val" == "v"+"al" ;
System.out.println(bool); // 输出:true
// 使用 == 不符合预期的情况,看着相同,但它们并不同,原因:指向不同的内存地址
boolean bool = new String("val") == "val";
System.out.println(bool); // 输出:false
// 使用 == 不符合预期的情况,看着相同,但它们并不同,原因:指向不同的内存地址
boolean bool = new String("val") == new String("val")
System.out.println(bool); // 输出:false
// 这个两值是相同的,原因:比较具体的值,值相同
boolean bool = new String("val").equals("val");
System.out.println(bool); // 输出:true
// 其他相同的情况
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one.equals(two); // true ,原因:比较具体的值,值相同
one.equals(three); // true ,原因:比较具体的值,值相同
one.equalsIgnoreCase(four); // true ,原因:忽略大小写,比较具体的值,值相同
还不明白的欢迎留言交流!