下载此文档

全面理解java中的String.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
精品文档,仅供学习与交流,如有侵权请联系网站删除
【精品文档】第 2 页
1. 首先String不属于8种基本数据类型,String是一个对象。 
  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 
  2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 
  3. String str=”kvill”; 
String str=new String (“kvill”);的区别: 
  在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。 
  常量池(constant pool)指的是在编译期被确定,。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 
  看例1: 
String s0=”kvill”; 
String s1=”kvill”; 
String s2=”kv” + “ill”; 
( s0==s1 ); 
( s0==s2 );
  结果为: 
true 
true
  首先,我们要知道Java会确保一个字符串常量只有一个拷贝。 
  因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。 
  所以我们得出s0==s1==s2; 
  用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。 
  看例2: 
String s0=”kvill”; 
String s1=new String(”kvill”); 
String s2=”kv” + new String(“ill”); 
( s0==s1 ); 
( s0==s2 ); 
( s1==s2 );
精品文档,仅供学习与交流,如有侵权请联系网站删除
【精品文档】第 2 页
  结果为: 
false 
false 
false
  例2中s0还是常量池中”kvill”的应用,s1因为无法在编译期确定,所以是运行时创建的新对象”kvill”的引用,s2因为有后半部分new String(“ill”)所以也无法在编译期确定,所以也是一个新创建对象”kvill”的应用;明白了这些也就知道为何得出此结果了。 
  4. (): 
  再补充介绍一点:,在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个方法;当一个String实例st

全面理解java中的String 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人neryka98
  • 文件大小22 KB
  • 时间2021-12-13