两种创建String对象的区别

创建String对象,我们可以用两种方式:

    1, String s = new String("Victory");

2,       String s = "Victory";

那么这两种方式的区别是?先看一个程序:

String     s1,s2; 
s1=new     String("we     are     students"); 
s2=new     String("we     are     students"); 

String     s3,s4; 
s3="how     are     you"; 
s4="how     are     you"; 

此程序中     s1     s2引用不同的实体 
                  s3     s4是引用同一个实体 
                                          为什么会不同呢?

------>>实际上String 类型的值是放在一个字符串常量池里,s3="how     are     you"; s4="how     are     you";当s3执行完了后池里有一个对象,内容就是"how are you",再执行s4 的话,jvm首先会去池中找,当在池中找到"how are you"的话,s4直接引用它,若没找到,在创建新的对象引用.  
s1=new     String("we     are     students"); s2=new     String("we     are     students");栈中的s1,s2分别引用堆中两个对象,堆中的这两个对象指向常量池中的同一个常量"we are students",所以s1,s2的并不相等.  

现在我们回过头来分析一下刚才的两种不同创建String对象的方式

;1, String s = new String("Victory");    //创建了两个对象,一个是s,一个是Victory

2,       String s = "Victory";    //创建了一个对象 s ,而Victory已经存在了,不用再创建,直接引用!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值