java中System.out.println(a==b) 输出true还是false?详细原因?

2024-11-06 11:03:51
推荐回答(4个)
回答1:

int a=10;
int b=10;

String aa="10";
String bb="10";

都属于值类型,用==可以得到true

如果用 String aa = new String("10")
String bb = new String("10")

System.out.println(aa==bb)
就会输出false。

后者就属于对象类型,会在内存中对比。

回答2:

是对象池的问题,你的比较对象指向的都是同一个地方,所以相等。

你试试
String str1="abc";
String str2=new String("abc");
System.out.println(str1==str2);

回答3:

xx==**这是逻辑表达式,返回值只有true&false ;
两变量都指向同一地址,你可以把它们实例化后再试试看。

回答4:

int类型是值类型,每个值类型在存储的时候都有自己的内存,比较的时候比较的是对应内存空间存储的值。
String是引用类型,引用类型比较的时候要视采用的比较方式。
如果采用“==”,比较的是引用地址是否相同。如果使用:
String aa="10";
String bb="10";
那么这时,aa与bb实际上只创建了一个对象,只是aa和bb都指向同一个引用。因此比较结果为真。如果此时改变aa或者bb中任意一个,那么这时才创建第二个对象。
如果使用equals,那么比较的是对应对象的值。
如:
public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=10;
int b=10;
System.out.println(a==b);
String aa="10";
String bb=new String("10");
System.out.println(aa==bb);
System.out.println(aa.equals(bb));
String a1=new String("123");
String a2=new String("123");
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
}

}
那么结果将是:
true
false
true
false
true