黑马程序员技术交流社区

标题: 求解,关于String类的问题 [打印本页]

作者: alexanda    时间: 2015-1-21 23:20
标题: 求解,关于String类的问题
本帖最后由 alexanda 于 2015-1-22 22:14 编辑

String s="abc";这个s的地址值是多少呀?请问下这个语句操作到底创建了对象没有?
还有String类中equals方法不是比较的是字符串的内容吗?
另外请教大家几个问题:
旁边的是我的理解,结果是eclipse得到的!请问大家有什么理解吗?尤其是最后一个,为什么s3.equals(s2),结果为false啊?两个变量输出的值都为adc呀?最后一个的确是true,我之前弄错了!

作者: da_chuan    时间: 2015-1-21 23:42
我测了一下s3.equals(s2)的值是true啊,s2,s3的值都是abc比较的值是真
作者: alexanda    时间: 2015-1-21 23:58
额,我代码弄错了吗?不好意思了,不过我还是不懂String s="abc",语句到底创建了对象没?
作者: jun_03    时间: 2015-1-21 23:58
看视频认真点!讲的每句话几乎都会考!
作者: 家进    时间: 2015-1-22 11:09
alexanda 发表于 2015-1-21 23:58
额,我代码弄错了吗?不好意思了,不过我还是不懂String s="abc",语句到底创建了对象没? ...

“abc”本身就是一个对象了呀。你试试 “abc”..length();  典型的对象调用方法嘛。
作者: godmmm    时间: 2015-1-22 11:28
这个你只要记住有个字符串常量池就好理解了!
作者: 老外    时间: 2015-1-22 12:36
第一个:s1与s2同指向同一个对象“abc”所以地址值相同,equals:是比较这个字符串内容是否相同。
第二个:两个对象,new String是一个,“abc”还是一个!
第三个:我的理解是对象不同,所以地址值不一样!
第四个:跟第一个其实是一样的,这里面的+就是连接符,“a”+“b”+“c”,最后还是“abc”;所以解释同第一个!
第五个:你在试试,我刚才试了,System.out.println(s3.equals(s2));打印的true,你肯定是弄错了!至于上面的    s3==s2是false我感觉他们应该不是一个对象,但是为什么,我也不清楚,不敢给你解答!

作者: xiaoyi    时间: 2015-1-22 15:47
看得我一愣一愣的
作者: 汝建国    时间: 2015-1-22 16:13
楼上说的对啊
作者: lc030405    时间: 2015-1-22 21:14
String s="abc";这个s的地址值是系统分配的,我不知道,语句操作到底没有创建了对象,个人应该是当成基本数据类型看待,尽管她实质可以看成数组,是引用类型的数据,由于用的比较多java把她封装成基本数据类型,当用new方法时,就是对象了。这个就和装箱和拆箱的原理是一样的。 String类中equals方法是比较的是字符串的内容。

最后一题中equals的结果为TURE,你再测试一次  我测试的为ture
作者: lc030405    时间: 2015-1-22 21:15
alexanda 发表于 2015-1-21 23:58
额,我代码弄错了吗?不好意思了,不过我还是不懂String s="abc",语句到底创建了对象没? ...

String s="abc";这个s的地址值是系统分配的,我不知道,语句操作到底没有创建了对象,个人应该是当成基本数据类型看待,尽管她实质可以看成数组,是引用类型的数据,由于用的比较多java把她封装成基本数据类型,当用new方法时,就是对象了。这个就和装箱和拆箱的原理是一样的。 String类中equals方法是比较的是字符串的内容。

最后一题中equals的结果为TURE,你再测试一次  我测试的为ture




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