本帖最后由 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,我之前弄错了!
|