黑马程序员技术交流社区
标题:
String类和String的区别
[打印本页]
作者:
hacker◊紫猫
时间:
2014-10-2 22:23
标题:
String类和String的区别
String s="abc";
s=="a"+"bc";求输出的对错
String s=new String ("abc"
);
s=="a"+"bc";求输出的对错
作者:
叶尔纳
时间:
2014-10-2 23:07
false,true
作者:
陈云阳
时间:
2014-10-3 02:01
楼主 你要记住一点,只要是new出来的,都会在内存中开辟一个新空间,所以是false
作者:
wf111sxwf
时间:
2014-10-7 11:22
通过new创建字符串对象,相当于在堆内存中创建了两个对象
作者:
980344791
时间:
2014-10-7 22:59
第一个是true;
第二个是false;
作者:
tiancairc
时间:
2014-10-7 23:05
true,false
作者:
shileishihai
时间:
2014-10-8 00:02
第一个分析:算术运算符连接符“+”的优先级别高于比较运算符“==”,所以:先"a"+"bc"="abc",然后s=="abc",结果为true. 第二个分析:new一个s对象,同时构造函数传入参数"abc"进行初始化。但s对象在栈中记录的是一个地址值,所以一个地址值与一个字符串比较,结果为false.
作者:
luofeng
时间:
2014-10-8 05:23
运行下试试不就知道了。
作者:
weiyi
时间:
2014-10-8 11:56
运行后发现是:true false
先看Api1.6版本的解释:
public String(String original)初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。由于 String 是不可变的,所以无需使用此构造方法,除非需要 original 的显式副本。
参数:
original - 一个 String。
是不是可以这么理解:String s=new String ("abc"),"abc"是一个对象,s是"abc"对象的一个副本(相当于在内存中copy了一份,内容一样,地址是不一样的),也就是说s是另一个对象,s和"abc"不是同一个对象所以s=="abc"为false
以上是个人理解,求大师解惑
作者:
Captain_Jack_Sp
时间:
2014-10-8 12:05
true false,最主要原因就是new出来的都是新开辟的空间啊,true的原因是因为字符已经在里面直接用就行了,不管你是a+b+c,只要是一样的字符就可以
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2