Java_以下返回true的字符串表达式有?"test"=="test"?"test"="test"?"test".equals(new String("test"))?"test"==(new St

深藏阁楼爱情的钟 2023-05-29 02:59 144阅读 0赞

题目代码化:

  1. package StringTest;
  2. public class Test {
  3. public static void main(String[] args) {
  4. System.out.println("test"=="test");//A
  5. System.out.println("test"="test");//B
  6. System.out.println("test".equals(new String("test")));//C
  7. System.out.println("test"==(new String("test")));//D
  8. }
  9. }

答案:AC
分析:

  • A: ==比较的两边的地址值,“test”在字符串常量池中时同一个对象,所以true
  • B:乍一看是一个恒等式,返回true也没错,但是要注意一点的是,赋值语句=左边必须是变量,如果是常量编译器会报错,如图:,但如果左边是变量之后就只是一个字符串表达式了,而不是boolean类型,所以也不存在返回true和false的问题了。
    在这里插入图片描述
  • C:equals方法比较的是两个字符串的内容,所以true。
  • D: ==右边在堆中new出来了一个新的对象,对象保存的是字符串常量池中test的地址,而此表达式本质是 字符串常量池中test的地址 == 堆中字符串对象的地址,所以false。

发表评论

表情:
评论列表 (有 0 条评论,144人围观)

还没有评论,来说两句吧...

相关阅读