今天遇到一个问题,关于字符串的比较:
String str01 = "11";
String str02 = "11";
String str03 = "250";
String str04 = new String("250");
Log.i("11", String.valueOf(str01=="11")); ====> true
Log.i("250", String.valueOf(str03=="250")); ====> true
Log.i("11", String.valueOf(str01==str02)); ====> true
Log.i("250", String.valueOf(str04==str03)); ====> false
Log.i("250", String.valueOf(str03.equals(str04))); ====> true
看到结果,是为什么呢?,首先我们来说说"=="与"equals"在字符串比较中的作用吧:
我们都知道这两者都有比较字符串的功能,不再之处在于equals只比较两个字符串的内容是否相同,只要比较的字符内容相同就返回true,否则返回false.
然而"=="就不一样,它不仅比较字符串的内容,而且要比较这个内容是否是引用同一个对象,比如以上第四个打印为false,因为两个变量str03,str04虽然值一样,但所指对象不同,所以返回false,第五个就不同只比较值是否相同,所以返回true.
说的比较简单希望能给大家带来帮助.