new String().substring(1,2)和String str = new String();  str.substring(1,2);这两种写法有什么区别?不同点是什么?

解决方案 »

  1.   

    两种写法在结果上没有任何区别,第二种只是比第一张多声明了一个String对象的引用而已,好处就是可以用str这个对象引用再做点别的事情
      

  2.   

    new String().subString(1,2)
    在堆中创建了一个对象。然后直接调用了这个对象的substring方法。
    String str = new String(); str.substring(1,2);
    在堆中创建了两个对象,str存的是String对象的地址。通过str地址找到对象,调用对象的方法
      

  3.   

    str.substring返回对象和str不是同一个对象,这就是区别
    加入我想用最初的str对象,你的第一种写法能满足我吗?
      

  4.   

    一楼是正解,用了str你还可以干其他事情,最简单的就是,
    打印下str
      

  5.   

    String 有两种赋值方式
    1、是直接赋值  eg: String str = "abc" ;这种方式只开辟一个堆内在空间,对象自动入池,如果有相同的字符串内容不会再重新声明;
    2、是构造方法赋值: eg : String str = new Strint("abc") ;产生两块内在空间,对象不会自动入池可以调用intern()方法手动入池,一般都使用第一种方法。substring(beginless , endless)是截取字符串的,主要区别是在new String(), 与String()上。你再仔细研究一下吧,不难
    new String().substring(1,2)
    String str = new String();
    str.substring(1,2);这两种写法有什么区别?不同点是什么?
      

  6.   

    如果你这个String对象只需要用一次就写第一个:new String().substring(1,2);
    String str = new String(); str.substring(1,2);这样写的话str这个对象在其它地方也可以用。
    这两种写法就这点区别,怎么选择看你的应用环境。