StringBuilder
引言
在对字符串的操作,例如字符串的拼接
package STRING;
public class StringDemo4 {
public static void main(String[] args) {
String s = "hello";
s += "world";
System.out.println(s);
}
}
如果对字符串进行操作拼接,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存卡空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢?答案是肯定的,我们可以通过Java提供的
StringBuilder
类来解决这个问题
StringBuilder是一个可变的字符串类,,我们可以把它看成一个容器
这里的可变是指StringBuilder对象中的内容是可变的
String 和 StringBuilder 的区别
- String:内容不可变
- StringBuilder:内容是可变的
StringBuilder构造方法
方法名 | 说明 |
---|---|
pulic StringBuilder( ) | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder( String str ) | 根据字符串的内容,来创建可变字符串对象 |
StringBuilder的添加和反转方法
方法名 | 说明 |
---|---|
public StringBuilder append(任何类型) | 添加数据,返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
package STRING;
public class StringDemo6 {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
// public StringBuilder append(任何类型) 添加数据,返回对象本身
StringBuilder sb2 = sb.append("hello");
System.out.println("sb:" + sb);
System.out.println("sb2" + sb2);
//判断地址是否相同
System.out.println(sb == sb2);
}
}
创建一个对象sb,并且利用是append方法给sb添加字符串数据“hello”,该方法返回sb对象本身,这时候把已经赋值了的sb的数据赋值给了sb2,啥也输出的结果是和sb一样,并且sb和sb2所指的地址也一样
如何实现字符串的拼接呢?
package STRING;
public class StringDemo6 {
public static void main(String[] args) {
// 创建对象
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append("java");
//链式编程
sb.append(" hello").append("world");
//输出
System.out.println(sb);
}
}
上面利用append方法进行拼接,因为安排append方法返回的是对象本身,那么就可以对该对象本身继续添加数据,也就可以写成链式编程的写法了!!
要想实现sb字符串的反转,我们也可以使用reverse()方法来实现
package STRING;
public class StringDemo6 {
public static void main(String[] args) {
// 创建对象
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append("java");
//链式变成
sb.append(" hello").append("world");
//输出
System.out.println(sb);
sb.reverse();
System.out.println(sb);
}
}
String和StringBuilder的相互转化
- StringBuilder转化为String
public String toString():通过toString()就可以实现把StringBuilder转换为String
- String 转化为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转化为StringBuilder
package STRING;
import java.util.Scanner;
public class StringDemo5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String s = sc.next();
//String转换为StringBuilder
StringBuilder sb = new StringBuilder(s);
//字符串反转
sb.reverse();
//StringBuilder转化为String
s = sb.toString();
System.out.println("反转后:" + s);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95051.html