海纳百川,记录点滴———做好积累之1:String

备忘记录:
String str="x";    
String str1="x";
String str2=new String("x");
System.out.println(str==str1);  结果为true,String 为引用类型,会在创建str=x的时候分配堆区常量池存储“x”,编译时进行,常量池对池中数据只存储一份,当创建str1=x的时候会查看内存是否存在"x",当存在的时候,直接将变量str和str1指向同一个引用,所以“==”返回true
System.out.println(str.equals(str1)); 值相同,同值比对,返回true
System.out.println(str1==(str2)); 结果为false,str2为重新创建堆区内存,并不是在编译时进行,其值不存在于常量池中,不管“x”是否已经存在,使用“==”进行存储地址的比较,所以返回false

另:
String在进行传递的时候,进行传值,并非进行引用传递,StringBuffer/StringBuilder为引用传递
String为char[]的包装类。包装类的特质之一就是在对其值进行操作时会体现出其对应的基本类型的性质。在参数传递时,包装类是按值传递的。其实String在进行引用的传递,只不过进行了引用的拷贝,并传递到函数中,所以产生了值传递的感觉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值