慕仙6066462
2019-10-08 09:23
老师说:判断两个引用的值是否相等,比较的也是地址。
但是看如下代码:
public class A{
private int num=1;
private int num2=1;
public static void main (String[]args){
A a=new A();
A a2=new A();
if(a.num==a2.num2)
System.out.println("两个值相同");
else
System.out.println("两个值不同");
}
}
为什么我这输出的是:两个值相同。
请各路大神解一解
if(a.num==a2.num2)应该改成
if(a==a2)
a.属性就是值了。而你a虽然给了值,a==a2不是比较值,还是地址
复杂点的说的话
你在创建一个字符串属性或者变量是会先在内存中的常量池中去寻找是否有你要创建的字符串(是否查找也和字符串创建方式有关)如果有就不会再创建了,所以你使用equals 比较字符串时 只要比较地址就可以知道是否值是相等的了
== 比较的时对象的值
equals比较的是对象的地址
Java入门第二季 升级版
530667 学习 · 6091 问题
相似问题