为什么JAVA不可以用“==”来比较两个字符串是否相等?

Python014

为什么JAVA不可以用“==”来比较两个字符串是否相等?,第1张

Java中,如果两个字符串是这样 Sting a=“a” 赋值方式时,同样也可以使用 == 来比较是否相等,但实际上也不是在比较两个变量的内容,当新一个变量赋值时( Sting a=“a” 赋值方式会把值放到栈中)先会从栈中找是否有相同的值,如果有就会直接指向那个值,所以使用==也可比较是否相等。\x0d\x0a但如果是new String("a")这样new出字符串对象时,即使内容完全一样,使用==比较也是false,因为==比较的是堆内存中的地址,所以只能是用equals()方法比较内容。\x0d\x0a\x0d\x0aC#可用 == 来比较两个字符串是否相等,其实底层也是使用了equals()方法来进行比较。

不可以。在java中,Java的字符串初始化以后是不可写的,因此==两天是不可以写字符串的,利用这点,如果不同的字符串变量内容相同,则可以调用引用,而不是创建新的对象,从而减少内存占用。