java中的String及相关知识点

概述

String 在java.lang包下,用时不用导包。
String是字符串。

  • 特点:
    1:String的值在创建之后不可改变。
    2:String虽然在创建之后不可改变但是可以被共享。
    3:底层的实现原理是字节数组(byte[])。

String的常用构造方法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

String s = "a";
String s2 = s + "";
System.out.println(s == s2);
String s3 = "a" + "";
System.out.println(s2 == s3)

在这里插入图片描述
分析:
对String对象进行 + 操作,实际上,会创建一个临时的StringBuilder对象进行实现拼接操作,用StringBuilder的append()方法拼接完毕,再调用toString()方法返回。

而 对于编译时常量,在编译后直接能计算出拼接后的字符串值,此时不需要再运行时创建临时StringBuilder对象。

于是,第三行String s2 = “a” + “” 就相当于 String s2 = “a”

  • String字符串拼接符 “+”底层原理
    1:字符串常量的拼接
		String str3="hello"+" word!";
		String str4="hello word!";
		System.out.println(str3==str4);
		//运行结果:true

原因:JVM编译器对字符串做了优化,在编译时str3就已经被优化成“hello Word!”,str3和str4指向字符串常量池同一个字符串常量,所以==比较为true。
2:字符串+字符串变量、字符串变量之间的拼接。

		String str1="hello";
		String str2=" word!";
		String str3="hello word!";
		String str4=str1+"word!";
		System.out.println(str3==str4);
		//运行结果为false

原因:字符串拼接时如果有字符串变量参与拼接,底层调用了StringBuffer可变字符串处理。代码如下

		StringBuffer sb=new StringBuffer("");
		sb.append(str1);
		sb.append("word!");
		str4= sb.toString();
//StringBuffer的toString()方法底层new了一个String对象,所以str4在堆内存中重新开辟了空间,
//str3指向常量池,所以为false

StringBuider

在这里插入图片描述
注意因为append 返回的是对象,所以可以使用链式编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值