黑马程序员技术交流社区
标题:
求解,关于String类的问题
[打印本页]
作者:
alexanda
时间:
2015-1-21 23:20
标题:
求解,关于String类的问题
本帖最后由 alexanda 于 2015-1-22 22:14 编辑
String s="abc";这个s的地址值是多少呀?请问下这个语句操作到底创建了对象没有?
还有String类中equals方法不是比较的是字符串的内容吗?
另外请教大家几个问题:
1.判断定义为String类型的s1和s2是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);//true,因为==在引用数据类型比较的是地址值
System.out.println(s1.equals(s2));//true,因为String类中重写了equals方法,比较的是两个对象,不是地址值了
2.下面这句话在内存中创建了几个对象?
String s1 = new String("abc");//
3.判断定义为String类型的s1和s2是否相等
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); ?//false,两个对象地址值不相等
System.out.println(s1.equals(s2)); ?//true,两个String对象内容相等
4.判断定义为String类型的s1和s2是否相等
String s1 = "a" + "b" + "c";
String s2 = "abc";
System.out.println(s1 == s2); ?//true,地址值不等
System.out.println(s1.equals(s2)); ?//true,内容相同
5.判断定义为String类型的s1和s2是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3==s2); //false
System.out.println(s3.equals(s2)); ?//true
旁边的是我的理解,结果是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