不知道这句话是不是等效
String mystr= new String("test");

解决方案 »

  1.   

    String是一个比较特殊的东西 "test"本身就是一个String对象String mystr= new String("test");也是正确的,但没必要重复创建对象,看一下书,仔细体会一下
      

  2.   

    ""在java中默认为字符串类型,当String mystr = "test"; 时,jvm自动为mystr创建"test"。
      

  3.   

    java 提供String str=""的初始化类
      

  4.   

    请参考以下文档:
    The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example: 
         String str = "abc";
     
    is equivalent to: 
         char data[] = {'a', 'b', 'c'};
         String str = new String(data);
      

  5.   

    你就把String看作原始类型就可以了!
    这个特性只是为了方便,Java给的方便你还有意见啊!
      

  6.   

    谢谢!不是有意见,只是觉得希望弄清楚概念,即为什么。
    我的理解是 创建对象用如下语法:类名 对象名 = new 构造器那么我就有了一个概念,即创建对象的语法
    而 String对象居然是这样的 String 对象名="test";
    我就不理解了,除非java规定 String对象创建的语法与与众不同还是不明白啊,那位大哥能给我指点迷津?
      

  7.   

    我觉得
    "test" 应该是一个匿名对象
    而java的特点是自动回收,String str申明了一个对象,而这个对象引用了那个匿名对象,从而使用str就相当于使用了"test"
      

  8.   

    String 是一个特例
    记得就行了
      

  9.   

    同意。java规定 String对象创建的语法与与众不同
      

  10.   

    也许吧;
    可能你要到sun公司去问问明白了.
      

  11.   

    "可能你要到sun公司去问问明白了"KAO,千万别,那可把咱中国人的面子给....
      

  12.   

    形同c语言的算符重载,在java中没有这个概念,但是虚拟机对String自动进行算符重载
      

  13.   

    我听说是这样的:
    用new String("")来定义的String是新开一块内存区域来存储内容
    (赋值给变量),
    而直接用=""就是先从一个什么存储空间里(好像叫堆吧)找,
    找到了,就把变量指向那个值,
    没有的话就在那个存储空间里建这么一个值,然后赋给变量!说的不对就算我说梦话吧!:)good luck
      

  14.   

    String mystr = "test"; //虚拟机自动分配
    String mystr = new String("test"); //对象分配,再程序中实现。
    String是一个特殊对象,你可以通过new来实例化,也可以匿名实例化。
    但是匿名实例化的效率比new实例化的效率还要高,你可以试试。
      

  15.   

    String mystr = "test"; 
    根本就没有为mystr创建对象吧!
    它应该相当于
    String temp = new String("test");
    String mystr = mystr;其中temp是JVM自动创建的
    mystr只是一个引用而已类似于C里面:char * p = "hi!";
      

  16.   

    "test".equals("test")这个是不是能说明一些问题!
      

  17.   

    我也是个初学者
    String mystr = "test"; 不是定义了一个字符串变量吗?
    这个变量和对象有什么区别?
      

  18.   

    String a = "ABC";
    String b = "ABC";
    a == b      --> true
    a.equals(b) --> trueString a = new String("ABC");
    String b = new String("ABC");
    a == b      --> false
    a.equals(b) --> true第一个之所以是true是java优化的问题
    它跟这个是等价的
    String a = "ABC";
    String b = a;