Java知识【StringBuilder和StringJoiner】
目录
1,StringBuilder
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。
当我们在拼接字符串和反转字符串的时候会使用到
1.1:基本使用
-
public class StringBuilderDemo3 {
-
public static void main(String[] args) {
-
//1.创建对象
-
StringBuilder sb = new StringBuilder("abc");
-
-
//2.添加元素
-
/*sb.append(1);
-
sb.append(2.3);
-
sb.append(true);*/
-
-
//反转
-
sb.reverse();
-
-
//获取长度
-
int len = sb.length();
-
System.out.println(len);
-
-
-
//打印
-
//普及:
-
//因为StringBuilder是Java已经写好的类
-
//java在底层对他做了一些特殊处理。
-
//打印对象不是地址值而是属性值。
-
System.out.println(sb);
-
}
-
}
1.2:链式编程
-
public class StringBuilderDemo4 {
-
public static void main(String[] args) {
-
//1.创建对象
-
StringBuilder sb = new StringBuilder();
-
-
//2.添加字符串
-
sb.append("aaa").append("bbb").append("ccc").append("ddd");
-
-
System.out.println(sb);//aaabbbcccddd
-
-
//3.再把StringBuilder变回字符串
-
String str = sb.toString();
-
System.out.println(str);//aaabbbcccddd
-
-
}
-
}
1.3:练习1:对称字符串
需求:
键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
对称字符串:123321、111
非对称字符串:123123
代码示例:
-
public class StringBuilderDemo6 {
-
//使用StringBuilder的场景:
-
//1.字符串的拼接
-
//2.字符串的反转
-
-
public static void main(String[] args) {
-
//1.键盘录入一个字符串
-
Scanner sc = new Scanner(System.in);
-
System.out.println("请输入一个字符串");
-
String str = sc.next();
-
-
//2.反转键盘录入的字符串
-
String result = new StringBuilder().append(str).reverse().toString();
-
-
//3.比较
-
if(str.equals(result)){
-
System.out.println("当前字符串是对称字符串");
-
}else{
-
System.out.println("当前字符串不是对称字符串");
-
}
-
-
}
-
}
1.4:练习2:拼接字符串
需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[] arr = {1,2,3};
执行方法后的输出结果为:[1, 2, 3]
代码示例:
-
public class StringBuilderDemo7 {
-
public static void main(String[] args) {
-
//1.定义数组
-
int[] arr = {1,2,3};
-
-
//2.调用方法把数组变成字符串
-
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();
-
}
-
}
2,StringJoiner
-
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
-
作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
-
JDK8出现的
-
基本使用:
-
//1.创建一个对象,并指定中间的间隔符号
-
StringJoiner sj = new StringJoiner("---");
-
//2.添加元素
-
sj.add("aaa").add("bbb").add("ccc");
-
//3.打印结果
-
System.out.println(sj);//aaa---bbb---ccc
-
//1.创建对象
-
StringJoiner sj = new StringJoiner(", ","[","]");
-
//2.添加元素
-
sj.add("aaa").add("bbb").add("ccc");
-
int len = sj.length();
-
System.out.println(len);//15
-
//3.打印
-
System.out.println(sj);//[aaa, bbb, ccc]
-
String str = sj.toString();
-
System.out.println(str);//[aaa, bbb, ccc]
-
2.1:关于字符串的小拓展:
-
字符串存储的内存原理
String s = “abc”;直接赋值
特点:
此时字符串abc是存在字符串常量池中的。
先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。
所以,直接赋值的方式,代码简单,而且节约内存。
-
new出来的字符串
看到new关键字,一定是在堆里面开辟了一个小空间。
String s1 = new String(“abc”);
String s2 = “abc”;
s1记录的是new出来的,在堆里面的地址值。
s2是直接赋值的,所以记录的是字符串常量池中的地址值。
-
==号比较的到底是什么?
如果比较的是基本数据类型:比的是具体的数值是否相等。
如果比较的是引用数据类型:比的是地址值是否相等。
结论:==只能用于比较基本数据类型。不能比较引用数据类型。
文章来源: qianxu.blog.csdn.net,作者:爱吃豆的土豆,版权归原作者所有,如需转载,请联系作者。
原文链接:qianxu.blog.csdn.net/article/details/127011402
- 点赞
- 收藏
- 关注作者
评论(0)