开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情
零基础自学javase黑马课程第二十天
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由京与旧铺原创,csdn首发!
😘系列专栏:java学习
💻首发时间:🎞2022年12月22日🎠
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦
🎧作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
🐱💻导航小助手
零基础自学javase黑马课程第二十天🐱💻导航小助手🎍练习-拼接字符串🥽StringJoiner🎑字符串相关类的底层原理
🎍练习-拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回
调用该方法,并在控制台输出结果
例如:数组为int[ ] arr={1,2,3};
执行方法后的输出结果为:[1,2,3]
package com.itheima.test8;
public class StringBuilder3 {
public static void main(String[] args) {
int[] arr={1,2,3};
String str=arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[] arr){
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
return sb.toString();
}
}
🥽StringJoiner
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的
作用:提高字符串的操作效率,而且代码编写非常简洁,但是目前市场上很少有人用
jdk8出现的
构造方法
public StringJoiner(间隔符号) 创建对象,制定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号) 创建对象,制定拼接时的间隔符号,开始符号,结束符号
成员方法
public StringJoiner add(添加的内容) 添加数据,并返回对象本身
public int length() 返回长度(字符出现的个数)
public String toString() 返回一个字符串(该字符串就是拼接之后的结果)
package com.itheima.test8;
import java.util.StringJoiner;
public class StringJoiner1 {
public static void main(String[] args) {
StringJoiner sj=new StringJoiner(",","[","]");
sj.add("aaa").add("bbb").add("ccc");
int len=sj.length();
System.out.println(len);//13
System.out.println(sj);//[aaa,bbb,ccc]
String str=sj.toString();
System.out.println(str);//[aaa,bbb,ccc]
}
}
🎑字符串相关类的底层原理
原理1:字符串存储的内层原理
直接赋值会复用字符串常量池中的
new出来不会复用,而是开辟一个新的空间
原理2:==号比较的到底是什么
基本数据类型比较数据值
引用数据类型比较地址值
原理3:字符串拼接的底层原理
拼接的时候没有变量,都是字符串,触发字符串的优化机制,在编译的时候就已经是最终的结果
在拼接的时候有变量,jdk8以前底层会使用StringBuilder
原理4:StringBuilder源码分析
默认创建一个长度为16的字节数组
添加的内容长度小于16,直接存
大于16会扩容,原本的容量*2+2
扩容后还不够,以实际长度为准