1.“==”适用于:
是个运算符。
基本数据类型:判断值是否相同
引用数据类型:判断地址值是否相同
2.equals适用于:
是个java.lang.Object的方法。
只能使用在引用数据类型,比较地址
3.String字符串在内存中的分析:
定义一个String变量str1和str2、String对象str3和str4、“aaa”常量。
1.定义str1时在JVM栈中申请一个空间存放str1,String池中申请一个存放“aaa”的空间,str1的地址指向了“aaa”。同样str2也如此,其中地址指向也是“aaa”,str1==str2返回的是true;
2.定义的str3引用放在新的JVM栈中,JVM堆申请新的空间存放String对象,而该对象的内容地址是“aaa”的所在地址,跟1步骤不同的是str3指向的地址是String对象存放在堆中的地址,而不是“aaa”所在的地址。故而str3==str4返回false。