黑马程序员技术交流社区

标题: String s = “abc”;String s1 = “abc; [打印本页]

作者: 徐选伟Shirwee    时间: 2016-3-27 10:15
标题: String s = “abc”;String s1 = “abc;
String s = “abc”;String  s1 = “abc;System.out.println(s = s1);输出结果是什么?
作者: 715596417    时间: 2016-3-27 11:24
是true 字符串存储在字符串常量池,如果两个一样就存储一个
作者: 赵浩霖    时间: 2016-3-27 11:45
确定你是想打=而不是==?
如果是=就是先赋值后打印,就是s里的内容
如果是==就是比较的结果true,为什么是true楼上说的很对
如果s与s1其中有一个是通过Scanner录入的数,那么就是false。用s.equlse(s1)的结果才是true
作者: 可可TKD    时间: 2016-3-27 11:54
你确定是赋值还是比较?
作者: zhoubinjian    时间: 2016-3-27 12:47
如果你的题目没有写错 的话,,是abc,System.out.println(s = s1);就是打印s啊,因为s1赋值给s,s的值还是abc,
作者: hkh3321313    时间: 2016-3-27 15:37
首先,不是很明白楼主的意思,暂且有两种理解 (1) 把"="理解为赋值运算符 (2)把"="理解为"=="(比较运算符)
对于第一种情况,上代码:
class Demo1 {
        public static void main(String[] args) {
                String s = "abc";
                String s1 = "abc";
                System.out.println(s=s1);
        }
}
运行结果:
abc
对于第二种情况,代码如下:
class Demo2 {
        public static void main(String[] args) {
                String s = "abc";
                String s1 = "abc";
                System.out.println(s==s1);
        }
}
运行结果:
true
其实这种涉及了一个比较复杂的问题.

字符串是一个比较特殊的对象。
字符串之所以特殊,是因为java会在内容中为String类型的对像开辟一个空间,我们叫他串池!
字符串对象的创建之后会被放入到串池中。
串池有一个特点,就是对于相同对象,池中只存储一份。
那么串池把什么样的String看做是相同的String呢。请看:
String a="abc";和String b="abc" 对于这样的类型的声明方式(不是new出来的)串池把他们看做一个对象,所以池中只存储一分,只是有a 和b 两个引用罢了!
对于String只要用new关键字new出来的string,都是单独的一个对象。
而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。
实际上,String中的equls方法已经做了处理,这个方法是用于比较内容,所以要比较string的内容的时候而不是地址的时候,那就用它吧!
下面给出一个例子:
public class Demo3{
public static void main(String[] args){
  String S1=new String("abc");
  String S2="abc";
  String S3="abc";
  String S4=new String("abc");
  System.out.println(S1==S2);
  System.out.println(S2==S4);
  System.out.println(S2==S3);
  System.out.println(S1==S4);
}
}
运行的结果是:
false
false
true
false
作者: monZhang    时间: 2016-3-27 21:32
结果是编译错误    字符串定义都出错了   还纠结什么赋值号    搞不懂楼上的
作者: 马儿不吃草    时间: 2016-3-27 21:55
ture,两个指向的是同一地址
作者: 妄想年少轻狂    时间: 2016-3-27 22:01
输出是abc
作者: 604840337    时间: 2016-3-27 22:02
abc  ·······
作者: Man_hui    时间: 2016-3-27 22:58
abc啊。。。。
作者: 小流氓    时间: 2016-3-27 23:03
这题真有点难,不是我这个菜鸟能解决了的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2