黑马程序员技术交流社区

标题: 帮我看看这的需求分析哪里错了,急急急,先谢了。 [打印本页]

作者: 汗血黑马    时间: 2014-3-4 15:05
标题: 帮我看看这的需求分析哪里错了,急急急,先谢了。
:handshake/**
* 需求:6、 写出以下代码执行结果,分析为什么?(没有分析结果不得分)

        public class Test {
                public static void main(String[] args) {
                        String s = "abc";
                        s.substring(1);
                        s.replace("bc", "xyz");
                       System.out.println(s);
                       String value = new String ("abc");
                       System.out.println(s == value);
                }
       }
       分析:1,String s= "abc";定义了一个字符串常量,abc,一但被初始化就不可改变值。
*·        2.调用String类的substring构造方法,从1角标位索引,返回该字符串的子串"bc".
*3.调用String类的replace构造方法,替换原字符串的字符“bc”为新字符“xyz”.
*4在控制台打印输出字符串s。结果应该为字符串“xyz”.
*5.String value = new String("abc");这是重新定义了字符常量value,并且地址值指向原有字符串"abc"的内存空间。
*6.在控制台打印输出s==value,返回结果是boolean型值。因为常量一但定义无法改变值,所以结果为ture.
*7.借组MyEclipse高级编辑器验证结果。
*/
public class Test6 {
                   //6、 写出以下代码执行结果,分析为什么?(没有分析结果不得分)
            public static void main(String[] args) {
                    String s = "abc";
                    s.substring(1);
                    s.replace("bc", "xyz");
                   System.out.println(s);
                   String value = new String ("abc");
                   System.out.println(s == value);
            }
   }结果是:abc,false.和我的结果刚好相反!求分析哪里错了?
作者: 一年_Hei    时间: 2014-3-4 15:50
因为字符串一旦创建就不能修改,你的S一直都没变,s.substring(1);    s.replace("bc", "xyz");都是重新创建了一个新的字符串,不过你返回的值都没用String类引用接收,这两句代码执行完等于什么都没做,所以s还是"abc"。
String value = new String ("abc");虽然值一样,但它是重新创建了一个String对象,所以是false
作者: 一年_Hei    时间: 2014-3-4 20:00
一年_Hei 发表于 2014-3-4 15:50
因为字符串一旦创建就不能修改,你的S一直都没变,s.substring(1);    s.replace("bc", "xyz");都是重新创 ...

==是比较二个对象的哈希码是否相等。equals方法是Object类中的方法。在默认情况下比和==是一样的。都是比较哈希码。
但这个方法在不同的类中。可能被不同的所重写,一般重写后都是比较二个对象的值是否相等。拿String类做个比喻:== 比较的是二个对象的的引用是不是同一个字符串,而equals比较的是二个对象中的字符串的值是不是相等
作者: osully    时间: 2014-3-4 20:40
帮你添加了点语句
看看结果 再理解一下
  1. public class IntegerDemo {
  2.         public static void main(String[] args) {
  3.                 String s = "abc";
  4.                 System.out.println(s.substring(1));
  5.                 String s1 =s.replace("bc", "xyz");
  6.                 System.out.println(s);
  7.                 System.out.println(s1);
  8.                 String value = new String("abc");
  9.                 System.out.println(s == value);
  10.         }
  11. }
复制代码





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