它的创建机制,创建模式,源码分析?

解决方案 »

  1.   

    别人已经说的很好了看如下堆内存和栈内存区别 http://www.cnblogs.com/aioria0622/archive/2008/10/24/1319078.html
    developerWorks 中国  >  Java technology  >
    Java 理论与实践: 哈希
    有效和正确定义hashCode()和equals()http://www.ibm.com/developerworks/cn/java/j-jtp05273/
      

  2.   

    将内部成员设置为final的,对外不提供可以修改内部状态的接口。
      

  3.   

    string对象不能改变好像是内存池存有对象,没有的话也在池里做运算
      

  4.   

    只要有""就有新的String诞生了~改也是改引用
      

  5.   

    这个问题我也只是知道String类型不可变,好像是在堆内存存放字符串时,已经分配好了内存的大小,之后对字符串的操作都是先创建新的字符串空间,然后在重新把操作后的字符串写进去!!!
      

  6.   

    你好,你这个问题我也考虑过。String对象不能改变是因为:String在java中是不可变API(java中有可变与不可变两种API)。也就是说String对象在以被创建的时候就是不能被改变的了。
        例如:
             String a = "字符";
            String b = "新字符";
             a = b;
            
            这时候如果你打印a的话a的值是"新字符"。但是     这里的a只是一个引用,就好像是c语言中的指针,它是    "'字符'"    这个字符串的一个别名。所以说a指向了一个新的字符,但是原来的那个“字符”还是没有改变。
      

  7.   

    赞成。
    String类在设计时采用了不变模式(不变模式就是一个类的内部状态创建好后,整个生命周期都不会改变),然后在其类的方法中,没有一个方法是可以改变对象的,所有的属性也都是私有的,而且该类是final的,不可继承的,也就是同样不会有子类来改变它。