黑马程序员技术交流社区

标题: 对string的理解分享 [打印本页]

作者: yangruijing    时间: 2015-3-5 16:07
标题: 对string的理解分享
String      
         String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。
String的初始化
          String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。
    当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。
    String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。

   在常量池中只有一个相等的字符串,但是在内存中可以有多个相等的字符串。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps95C1.tmp.jpg

图片1.png (124.62 KB, 下载次数: 6)

图片1.png





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