首页 > 试题广场 >

以下哪些表达式返回为真()

[不定项选择题]
以下哪些表达式返回为真()
String a="My field1";
String b="My field1";
    String c=new String("My field1");
    String d=new String("My field1");

  • a==b
  • a==c
  • c=d
  • a.equals(b)
  • a.equals(c)
==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址   equals方法,注意:equals方法不能作用于基本数据类型的变量。 ①Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。 ②String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等
编辑于 2019-01-23 22:49:44 回复(4)
发表于 2022-07-05 18:13:30 回复(1)
编译期间 "My field1" 产生在常量池中;所以b在编译期间就指向常量池的"My field1";
c是new的对象,所以在堆里也创建了一个"My field1";d也在堆里new了一个"My field1";
所以c和d是不同的地址
发表于 2017-08-08 19:34:17 回复(6)
c=d输出的是My filed1
发表于 2017-10-17 08:51:36 回复(0)
1.==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 
2.String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等
3.equals不能作用于基本数据类型的变量。
发表于 2019-02-21 20:58:32 回复(2)
一个个在哪胡说八道
发表于 2022-01-10 13:16:08 回复(0)
  • c=d 不为真吗
发表于 2017-08-02 17:20:42 回复(10)
首先”==”第一个a创建了一个My field 储存到了常量池里,接下来b再创建时就会直接指向常量池,所以地址是一样的。 c和d都是new了个对象所以地址不同
发表于 2022-06-14 17:17:09 回复(0)
a,b在常量池中,c,d是new出来的,在栈空间中且c,d的Hello那句在堆空间中,==比较的时候,引用数据类型比地址基本数据类型比值,所以a==b,c,d是new出来的地址不一样是false,equals重写了==,比较的是对象值,所以abcd任何两个用equals都true
发表于 2021-04-09 17:49:27 回复(0)
==,如果作用的是基本数据类型,则比较的是存储的值是否相同,如果作用引用的数据类型,则比较的是存储的值和对象的地址是否相同;
equals只作用于引用型的数据类型,equals方法是用来比较两个对象的引用是否相等
发表于 2019-02-21 10:15:48 回复(0)
String的这两种创建形式是有区别的:
以 String a="My field1"; 这种形式创建的string的值会保存到常量池中
以new的形式创建的对象会保存在堆中
发表于 2022-10-29 14:11:52 回复(0)
==如果作用于基本数据类型的变量,则直接比较的是内容是否相等,如果作用于引用类型的变量,则比较的是地址值,String对equals方法进行了重写,用来比较存储的字符串是否相等,Object重写的equals比较的是两个对象是否同一个对象
发表于 2022-04-02 09:02:35 回复(0)
String s = ""; 是字面量的赋值方式。会在 JVM 堆空间(Java7及以后 HotSpot)的字符串常量池中找是否存在相同的字符串,有则返回地址,没有,则创建后返回地址。new String("");的方式会在 JVM 堆空间(非字符串常量池)中分配空间
发表于 2023-08-24 18:32:45 回复(0)
c=d输出的是My field1
在本题中c==d输出的是true,原因是JVM在对对象进行初始化的时候,发现常量池中有My field1这个常量,会直接拿来用的。
编辑于 2023-07-22 10:22:12 回复(0)
C项,c=d,会将 c的引用 指向 d的引用对象,之后打印c的值,故结果为 My field1
发表于 2022-11-16 11:43:18 回复(0)
c=d的输出结果为My field1
发表于 2022-11-15 22:25:29 回复(0)
a.equals(c)  的 equals  是String里面的,对比的不是对象。。。。误会了。。。
发表于 2022-03-23 21:19:42 回复(0)
==比较的是两个对象的地址是否相同, equal比较的是两个对象的内容是否相同
发表于 2021-11-03 22:48:54 回复(0)
1.==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 
2.String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等
3.equals不能作用于基本数据类型的变量。
发表于 2021-10-07 23:46:01 回复(0)
为什么e对
发表于 2017-08-28 00:31:54 回复(3)