A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//求输出语句后的结果
  1. package com.string.demo;

  2. public class StringHMTest {

  3.         public static void main(String[] args) {
  4.        
  5.                 String s1 = "a";
  6.                 String s2= "b";
  7.                 String s3 = "ab";
  8.                 String s4 = "ab";
  9.                 System.out.println(s3==s4);
  10.                 String s5 = "a"+"b";
  11.                 System.out.println(s3==s5);
  12.                 String s6 =s1+s2;
  13.                 System.out.println(s3==s6);
  14.                 String s7 = new String("ab");
  15.                 System.out.println(s3==s7);
  16.                 final String s8 = "a";
  17.                 final String s9 = "b";
  18.                 String s10 = s8+s9;
  19.                 System.out.println(s3==s10);
  20.         }

  21. }
复制代码

22 个回复

正序浏览
zhonggege1234 来自手机 中级黑马 2015-9-26 20:52:35
23#
还没学到这
回复 使用道具 举报
看不太明白啊  还要学学
回复 使用道具 举报
来学习学习。嘎嘎。。。
回复 使用道具 举报
初学的时候这个是有点吊
回复 使用道具 举报
Jared 中级黑马 2015-9-26 12:00:07
19#
答案是啥
回复 使用道具 举报
zzq18217362451 来自手机 中级黑马 2015-9-12 23:47:09
18#
还好,比较易错
回复 使用道具 举报
坐等大神回复!!!
回复 使用道具 举报
栽在了最后一个。分析下各原因,求纠正:
1、"ab"在常量池中,s3和s4都直接指向了它,所以true
2、"a"+"b"在编译时会把他们拼接成"ab",然后再常量池中找"ab",找到了就把地址值赋给s5,所以true
3、s1和s2都是变量,所以s1+s2会把拼接完后的值"ab"再装入new String()中给s6,相当于s6=new String("ab"),所以false
4、s7指向了在堆中新建的字符串对象,堆中的字符串对象又指向了常量池中的"ab",所以false
5、因被final修饰,所以编译时会自动把s8和s9替换成"a"和"b",跟上面2一样了,所以true
回复 使用道具 举报
gpw 中级黑马 2015-9-12 23:10:26
15#
true true false false false 对不对
回复 使用道具 举报
弄清==和equals 这题就简单了
回复 使用道具 举报
慢慢仔细读懂程序,加油
回复 使用道具 举报
坐等答案
回复 使用道具 举报
true,true,false,false,true
回复 使用道具 举报
很厉害的样子啊
回复 使用道具 举报
nice,不过觉得还可以啊
回复 使用道具 举报
Marx_D 中级黑马 2015-9-12 19:35:47
8#
true/true/false/false/true(对不)
回复 使用道具 举报
感觉理解最重要。
回复 使用道具 举报
String 的基本类型和引用类型,常量在方法区,对象在堆,加了最终修饰之后就是常量了,只要不是引用其他对象,都是指向同一个地址的,就是方法区
回复 使用道具 举报
理解了string 的指针引用,不会觉得叼。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马