深入分析String

1.首先是== 与equals

== 说明两个引用相同,即存储的地址相同;equals说明两个对象值相同。

2.分析的代码:

public static void main(String args[]){
	String s1 =  new String("abc");
	String s2 =  "abc";
	String s3 = "a"+"bc";
	String s4 = new String("a")+"bc";
	String s5 = new String("ab")+"c";
	String s0 = "a";
	String s10 = "bc";
	String s6 = s0+"bc";
	String s7 = s0+s10;
	
	System.out.println (s1==s2);
	System.out.println (s2==s3);
	System.out.println (s2==s4);
	System.out.println (s2==s5);
	System.out.println (s4==s5);
	System.out.println (s2==s6);
	System.out.println (s2==s7);
	System.out.println (s6==s7);
	
    }
执行结果:

s1 :在堆区创建一个字符串,字符串的值储存在常量区,相当于执行了“abc”和String()两个语句,创建两个对象;

s2 :在常量区创建字符串(当然如果常量区有就不用创建了);

s3:创建三个对象,先“a”后“bc”最后“abc”(“abc”是复制的a和bc);

s4和s5:他们创建的最后字符串值不加入常量区;只有使用引号包含的文本当方式创建的String之间使用+号连接产生的新对象才会加入常量区,例如s3.

具体的分析图如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值