一道简单的JAVA练习题

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:45:43
class ca2{
public static void main(String[]args){
String str1,str2,str3;
int a=33;
str1="abc";
str3=str1;
str3=str3+"a";
str1=str1+"a";
System.out.println(str3==str1);
}
}
谁能帮我看一下,为什么输出的是false,str1和str3输出的是一样的啊,怎么输出的不是ture??
?str1==str3和str3==str1有区别吗>?

"=="的作用:如楼上所说判断的是 内存地址是否相同

你在程序里str3=str1;这一句运行后,str3和str1的内存地址是相同的.


str3=str3+"a";
str1=str1+"a";
运行后,他们的内存地址已经变的不一样了.
所以 str3!=str1
那么你打印出来的结果就是false了

注意:
str1=str1+"a"; 运行前和运行后str1是完全不同的两个对象.他们的内存地址也是不同的.

不能直接比较,要用equals()

class ca2{
public static void main(String[]args){
String str1,str2,str3;
int a=33;
str1="abc";
str3=str1;
str3=str3+"a";
str1=str1+"a";
System.out.println(str3.equals(str1));
}
}

System.out.println(str3.equals(str1));
==比较的是str1和str3的引用是否相同,equals比较的是他们各自里面的值是否相同。
String str1="abc";
String str3=str1;
那么你输出System.out.println(str3==str1); 结果就为true

System.out.println(str3.equals(str1));
输出就是 true了,具体你去baidu Java中==和equals的区别吧.说了也没用.

str3==str1
判断的是 内存地址是否相同
str3.equals(str1)
判断的是 里面的值是否相同