1.首先要知道一个知识点:字符串的创建方式有两种。详细的可以看这篇博客:点我跳转
2.“==”是比较运算法,可以用来比较基本数据和引用类型的数据。
在比较基本数据的时候比较的是值相不相等,而在比较引用类型的数据的时候,比较的是地址相不相等。
当知道1的知识点后,我们就知道,如果字符串创建的方式为:String str1 = "123";String str2 = "123"; 则此时str1和str2存放的都是常量池中同一块的地址,所以str1 == str2的结果为true;
但如果,创建字符串的时候使用的是String str1 = new String("123"); String str2 = new String("123");, 此时str1和str2指向的是堆区中不同的空间,地址当然不一样,所以此时str1 == str2的结果为false。
所以这个时候如果我们用“==”来判断两个字符串是否相等就非常危险!
3.equals是Object类中的一个方法,只能用于比较引用类型的数据。
它比较的也是地址,但是在子类中(如比较字符串的时候)常常会重写,用来比较内容是否相等。
所以比较字符串的时候我们往往会使用equals而不是“==”!