下面这个程序的结果应该是多少?
public class Asdf
{
public static void main(String[] args)
{
Integer b1 = new Integer ( 1 );
Integer b2 = new Integer ( 1 );
Object obj1 = ( Object )b1;
Object obj2 = ( Object )b2;
if ( obj1 == obj2 )
if ( obj1.equals ( obj2 ) )
System.out.println ( "a" );
else
System.out.println ( "b" );
else
if ( obj1.equals ( obj2 ) )
System.out.println ( "c" );
else
System.out.println ( "d" );
}
}
public class Asdf
{
public static void main(String[] args)
{
Integer b1 = new Integer ( 1 );
Integer b2 = new Integer ( 1 );
Object obj1 = ( Object )b1;
Object obj2 = ( Object )b2;
if ( obj1 == obj2 )
if ( obj1.equals ( obj2 ) )
System.out.println ( "a" );
else
System.out.println ( "b" );
else
if ( obj1.equals ( obj2 ) )
System.out.println ( "c" );
else
System.out.println ( "d" );
}
}
equals表示对象的内容相同
Integer b1 = new Integer ( 1 );是什么意思啊?
{
public static void main(String[] args)
{
Integer b1 = new Integer ( 1 );
Integer b2 = b1;
Object obj1 = ( Object )b1;
Object obj2 = ( Object )b2;
if ( obj1 == obj2 )
if ( obj1.equals ( obj2 ) )
System.out.println ( "a" );
else
System.out.println ( "b" );
else
if ( obj1.equals ( obj2 ) )
System.out.println ( "c" );
else
System.out.println ( "d" );
}
}
答:对于引用型变量obj1和obj2而言,obj1 == obj2 是比较两者的引用地址(也即lz所说的内存地址),equals这里就是比引用对象的内容。另:Integer b1 = new Integer ( 1 );是指让b1指向内容为1的地址空间
public static void main(String[] args){
String a="s";
String b=a;
if(a==b){
System.out.println("ss");
}else{
System.out.println("nn");
}
}
}
上面代码会输出 ss
public class Test{
public static void main(String[] args){
String a="s";
String b="s";
if(a==b){
System.out.println("ss");
}else{
System.out.println("nn");
}
}
}
上面会输出 nn看了这个LZ应该明白了吧
==比较的是引用 equals比较的是内容
写的第二个例子不对哦~~String a="s";
String b="s";
其实只是同一个对象~
跟
String a="s";
String b=a;
一样~~
要写成
String a=new String("s");
String b=new String("s");