首页 > 试题广场 >

应用程序的main方法中有以下语句,则输出的结果( )

[单选题]
应用程序的main方法中有以下语句,则输出的结果( )
String s1=new String( xyz );
String s2=new String( xyz );
Boolean b1=s1.equals(s2);
Boolean b2=(s1==s2);
System .out.print(b1+ ” ” +b2); 
  • true false
  • false  true
  • true true
  • false  false
equals() 用于判断两个字符串的值是否相等;
== 用于判断两个对象的引用地址是否相同;
因为 s1 和 s2 分别是分别 new 创建出来的,因此指向的是堆内存中两个不同的对象地址。
发表于 2018-02-27 20:06:49 回复(0)
更多回答
又错了的人来回答一下:
String a = "a";
String b = "a";
这样定义的a和b指向的是字符串常量区变量,地址是一样的,即用equals为true,用==也为true。

但是
String a =new String( "a");
String b = new String( "a");
这样是定义了两个堆内存对象,只能equals,不能==
发表于 2018-03-27 14:20:52 回复(9)
String s1=new String( xyz );            //创建了String类型的内容为xyz的s1对象
String s2=new String( ” xyz ” );            //创建了String类型的内容为xyz的s2对象
Boolean b1=s1.equals(s2);                    //比较s1对象和s2对象的内容相等,返回true。
Boolean b2=(s1==s2);                        //比较s1和s2两个对象的存储地址是否相等,明显两者分别存储在不同的地址,所以返回:false。
故答案为:true  false
编辑于 2017-07-30 17:01:16 回复(4)
对于String的比较,自己总结有如下规律: 1.一般来说,==比较的是引用,即地址,equal比较的是值 2.如果都是new,则比较的结果==一定是FALSE,equal则看值 3.如果先一个new,一个直接赋值一个字符串 如String a=new String(“AA”); String b=“AA”; 此时结果==和equal都是TRUE,因为第二个在创建时会去字符串常量池找,有直接拿来用,不会专门去new 一个。 4.先直接赋值一个再new一个,则==是FALSE
发表于 2018-05-08 20:19:14 回复(5)
equals比较的是string的值是否相同,==则是是否指向同一个对象
发表于 2017-05-24 13:28:06 回复(0)
String s1 = new String("xyz");            //创建了一个String类的对象,对象值为xyz,而s1变量保存的是对象在堆中的地址
String s2 = new String("xyz");           //创建了一个String类的对象,对象值为xyz,而s2变量保存的是对象在堆中的地址
Boolean b1 = s1.equals(s2);            //equals比较的是对象的值,两个对象的值都是xyz
Boolean b2 = (s1==s2);              //== 比较的是两个变量的值,也就是对象的地址,new了两次,所有地址不同
发表于 2018-12-07 22:23:24 回复(1)
如果代码是如下情况:
String s1="abc";
String s2="abc";
Boolean b2=(s1==s2);
System .out.print(b1+ ” ” +b2); 
那么输出的结果是true
因为这样生成的字符串是放在字符串常量池的,所以他们的引用值是相等的,指向同一个存储空间,即结果返回的是true
而题目中这样定义字符串变量是分配了两个不同存储空间的,所以他们的引用值是不同的
发表于 2017-11-09 12:29:12 回复(0)
equals比较内容,所以是true,但是==比较对象的引用,s1和s2对象不是同一个,是堆中的不同内存区域
发表于 2017-05-25 19:45:08 回复(2)
  String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。 equals不能用于基本数据类型,只能用于引用类型。 ==可以用于基本数据类型和引用类型,引用类型判断两个地址是否一致
发表于 2019-08-29 02:28:48 回复(0)
equals 比较对象内容,== 比较基本数据类型
发表于 2017-07-29 08:30:53 回复(1)
equals()比较的是值是否相等,"=="比较的是对象的引用地址是否相等,使用两次new 创建的对象在堆中的地址是不相同的
发表于 2022-04-25 17:25:01 回复(0)
"a"一开始在方法区的常量池中,赋值的时候会将地址放入进堆里面的字符串常量池(stringTable),编译优化是在常量池中的
发表于 2021-08-09 13:51:18 回复(0)
如果使用的是 String str=new String("CPDD") 的方式是必创建对象,如果用 String str="CPDD" 这种方式创建对象的话,那么先从常量池中寻找,如果常量池中已有 "CPDD" 的值的话,那么就不再创建新对象了,而是直接将引用指向 该值。
发表于 2021-03-15 18:54:14 回复(0)
equals比较内容是否相同, ==比较地址值是否相同. 故答案为:true  false
发表于 2020-07-18 09:46:26 回复(0)

==比较地址

发表于 2018-08-10 10:52:29 回复(0)
“==”比较的是内存地址,只要使用了new关键字就是一个新的对象,内存地址肯定不同;
“equals”比较的是 哈希值,但是String类重写了hashCode()方法,只要内容相同哈希值就相同
发表于 2018-07-12 09:17:49 回复(0)
最后的输出是你吗什么鬼
发表于 2018-04-13 19:31:16 回复(1)
String类对Object的equals()方法重写了
发表于 2017-11-28 10:11:32 回复(0)
多打了吧
发表于 2017-08-02 18:09:37 回复(0)
这道题编译不出错误?
发表于 2017-06-06 13:44:56 回复(0)
Object类equals()方法 比较的是引用类型的地址值是否相同,但在String类中会重写equals()方法-->比较字符串的内容 ==运算符可以比较基本数据类型和引用数据类型 ,在比较引用数据类型时,判断它们的地址值是否相等
发表于 2023-03-23 09:37:47 回复(0)