String类的内存解析:终极

1.Java String类:构造字符串对象

  1. 常量对象:字符串常量对象是用双引号括起的字符序列。 例如:“你好”、“12.97”、"boy"等。
  2. 字符串的字符使用Unicode字符编码,一个字符占两个字节
  3. String类较常用构造方法:
    ① String s1 = new String();
    ② String s2 = new String(String original);
    ③ String s3 = new String(char[] a);
    ④ String s4 = new String(char[] a,int startIndex,int count)

2. String str = “abc”;与String str1 = new String(“abc”);的区别?

点击上面问题的答案

3.字符串的特性

  1. String是一个final类,代表不可变的字符序列
  2. 字符串是不可变的。一个字符串对象一旦被配置,其内容是不可变的。

4.字符串的内存解析:终极

  1. ①②③⑧原因是:点击进入String类底层解析
  2. String str5 = “Andriod”;str5 = str5 +“Handoop”;的代码执行顺序Jvm内存解析图,解释了String是不可变的字符序列
    内存解析图
  3. String str4 = “JavaEE”+“Andriod”;String str8 = “JavaEEAndriod”;两个写法在内存中一样,指向同一个地址。解释了 ⑦
public class TestString {
	@Test
	public void test1() {
		String str1 = "JavaEE";
		String str2 = "JavaEE";
		String str3 = new String("JavaEE");
		
		String str4 = "JavaEE"+"Andriod";
		String str5 = "Andriod";
		String str6 = str1 +str5;//指向str1和str的地址,类似于⑧,解释了⑧
		str5 = str5 +"Handoop";
		String str7 = str6.intern();//这个方法表示拼到一起的,只看内容;⑤ ⑥
		String str8 = "JavaEEAndriod";
		System.out.println(str1 == str2);//true ①
		System.out.println(str1 == str3);//false ②
		System.out.println(str1.equals(str3));//true ③
		
		System.out.println(str4 == str6);//false ④
		System.out.println(str4.equals(str6));//true ⑤
			System.out.println(str7 == str4);//true ⑥
		System.out.println(str8 == str4);//true ⑦
		
		Person p1 = new Person("AA"); 
		Person p2 = new Person("AA"); 
		System.out.println("^^"+(p1.name=p1.name));//true ⑧
	}
}
class Person{
	String name;
	Person(String name){
		this.name = name;
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值