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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

大家看一下 ,,每个输出语句输出什么:
  1. public class StringDemo1 {
  2.         public static void main(String[] args) {
  3.                 String s1=new String("hello");
  4.                 String s2=new String("hello");
  5.                 System.out.println("1:\t"+s1==s2);//false
  6.                 System.out.println("2:\t"+s1.equals(s2));//true
  7.                
  8.                 String s3=new String("hello");
  9.                 String s4="hello";
  10.                 System.out.println("3:\t"+s3==s4);//true
  11.                 System.out.println("4:\t"+s3.equals(s4));
  12.                
  13.                 String s5="hello";
  14.                 String s6="hello";
  15.                 System.out.println("5:\t"+s5==s6);
  16.                 System.out.println("6:\t"+s5.equals(s6));
  17.                
  18.                
  19.                 String s11="hello";
  20.                 String s22="world";
  21.                 String s33="helloworld";
  22.                
  23.                 System.out.println(s33==s11+s22);
  24.                 System.out.println(s33.equals(s11+s22));
  25.                 System.out.println(s33=="hello"+"world");
  26.                 System.out.println(s33.equals("hello"+"world"));
  27.                
  28.         }
  29. }
复制代码







.
.
.
.
.
.
.
.结果:



false
2:        true
false
4:        true
false
6:        true
false
true
true
true


里面还有个疑惑 不知道为啥  ==的输出语句 不会输出其他内容

9 个回复

倒序浏览
System.out.println("1:\t"+s1==s2);改成System.out.println("1:\t"+(s1==s2));其他有“==”的地方同理。
回复 使用道具 举报
hmjava520 发表于 2015-12-16 23:03
System.out.println("1:\t"+s1==s2);改成System.out.println("1:\t"+(s1==s2));其他有“==”的地方同理。 ...

真的是这样啊 ,,,但是为什么会这样啊!!!!!
回复 使用道具 举报
更正啊:::
  1. public class StringDemo1 {
  2.         public static void main(String[] args) {
  3.                 String s1=new String("hello");
  4.                 String s2=new String("hello");
  5.                 System.out.println("1:\t"+(s1==s2));//false
  6.                 System.out.println("2:\t"+s1.equals(s2));//true
  7.                
  8.                 String s3=new String("hello");
  9.                 String s4="hello";
  10.                 System.out.println("3:\t"+(s3==s4));//false
  11.                 System.out.println("4:\t"+s3.equals(s4));
  12.                
  13.                 String s5="hello";
  14.                 String s6="hello";
  15.                 System.out.println("5:\t"+(s5==s6));
  16.                 System.out.println("6:\t"+s5.equals(s6));
  17.                
  18.                
  19.                 String s11="hello";
  20.                 String s22="world";
  21.                 String s33="helloworld";
  22.                
  23.                 System.out.println(s33==s11+s22);
  24.                 System.out.println(s33.equals(s11+s22));
  25.                 System.out.println(s33=="hello"+"world");
  26.                 System.out.println(s33.equals("hello"+"world"));
  27.                
  28.         }
  29. }
复制代码



答案


1:        false
2:        true
3:        false
4:        true
5:        true
6:        true
false
true
true
true
回复 使用道具 举报
  System.out.println("2:\t"+s1.equals(s2));//true    如果不是  String 类重写了  Object类的  equals 方法  也是false
回复 使用道具 举报
xiaobei56 发表于 2015-12-16 23:10
真的是这样啊 ,,,但是为什么会这样啊!!!!!

"1:\t"+s1==s2相当于("1:\t"+s1)==s2

点评

谢谢啦  发表于 2015-12-17 12:48
嗯嗯 唉这问题,,,  发表于 2015-12-17 12:46
回复 使用道具 举报
哈希值和内容。
回复 使用道具 举报
anuo 中级黑马 2015-12-17 23:01:35
8#
为什么进入我的反馈的是错误...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马