为什么String类定义时候可以直接String s="erwew",  而不要String s=new String(); ?

解决方案 »

  1.   

    呵呵,道理很简单,资源浪费的问题,String s其实是一个引用,而"erwew"则是一个String对象,现在你用s指向了这个对象,而当你是String s = new String("erwew")时,你会又重新创建一个和erwew一样内容的全新的String对象和"erwew"这个String对象,造成了资源的浪费
      

  2.   

    String str = "xxx"是先查找有没有xxx这个字符串,如果有的话就让srt引用,所以有可能多个String类型的变量引用同一个字符串; 而String str = new String()是独立的,每次都新开一个对象。
    另外一方面理解,String str = "xxx"是从栈里开变量,多个变量(对象)之间可以共享,先把xxx放进栈里面,如果系统发现已经有xxx了,再把str放进来,以后也是,如果发现没有你所要创建的字符串(即值)才把该串放进栈里,然后再把对象放入栈中;而String str = new String()是在堆里开,是相互之间独立的,互不影响,不会共享一个对象。
    根据变成的需要这两种创建字符串的方式各有好处,当然,还有一种不错的方式就是StringBuffer,建议查阅资料。
      

  3.   

    2个原因:
    1、一个是yuwenbao所说的浪费资源的问题
    2、因为String十分常用,简化语法