1.1 StringBuilder类概述
StringBuilder:是一个可变的字符串。字符串缓冲区类。
String和StringBuilder的区别:
String的内容是固定的
StringBuilder的内容是可变的
1.1.1 +=拼接字符串耗费内存原因:
每次拼接都会产生新的字符串对象,而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器

1.2 StringBuilder类的常用方法
A:构造方法:
StringBuilder()
B:成员方法:
public int capacity():返回当前容量 (理论值)
public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能
1.2.1 案例代码十三:

package com.itheima_01;
/** StringBuilder:是一个可变的字符串。字符串缓冲区类。** String和StringBuilder的区别:* String的内容是固定的。* StringBuilder的内容是可变的。** 构造方法:* StringBuilder()** 成员方法:* public int capacity():返回当前容量* public int length():返回长度(字符数)** 容量:理论值* 长度:实际值*/
public class StringBuilderDemo {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println("sb.capacity():"+sb.capacity());
System.out.println("sb.length():"+sb.length());
}
}

1.2.2 案例代码十四:

package com.itheima_02;
/** 添加功能*        public StringBuilder append(任意类型):添加数据,并返回自身对象* 反转功能*        public StringBuilder reverse()*/
public class StringBuilderDemo {
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); //true
*/
/*
sb.append("hello");
sb.append("world");
sb.append(true);
sb.append(100);
*/
//链式编程
sb.append("hello").append("world").append(true).append(100);
System.out.println("sb:"+sb);
//public StringBuilder reverse()
sb.reverse();
System.out.println("sb:"+sb);
}
}

1.3 StringBuilder案例1.3.1 案例一需求:
StringBuilder和String通过方法完成相互转换
1.3.1.1 案例代码十五:

package com.itheima_03;
/** StringBuilder和String的相互转换** StringBuilder -- String* public String toString():通过toString()就可以实现把StringBuilder转成String** String -- StringBuilder* StringBuilder(String str):通过构造方法就可以实现把String转成StringBuilder*/
public class StringBuilderTest {
public static void main(String[] args) {
//StringBuilder -- String
/*
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world");
String s = sb.toString();
System.out.println(s);
*/
//String -- StringBuilder
String s = "helloworld";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}

1.3.2 案例二需求:
利用StringBuilder把数组拼接成一个字符串
举例:
int[] arr = {1,2,3};
结果:
[1, 2, 3]
1.3.2.1 案例代码十六:

package com.itheima_03;
/** 把数组拼接成一个字符串* 举例:* int[] arr = {1,2,3};* 结果:* [1, 2, 3]*/
public class StringBuilderTest2 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,2,3};
//写方法实现拼接
//调用方法
String s = arrayToString(arr);
//输出结果
System.out.println("s:"+s);
}
/** 两个明确:* 返回值类型:String* 参数列表:int[] arr*/
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
//[1, 2, 3]
sb.append("[");
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
sb.append(arr[x]);
}else {
sb.append(arr[x]).append(", ");
}
}
sb.append("]");
String result = sb.toString();
return result;
}
}

1.3.3 案例三需求:
利用StringBuilder完成字符串反转
1.3.3.1 案例代码十七:

package com.itheima_03;import java.util.Scanner;/** 把字符串反转** 分析:* A:键盘录入一个字符串* B:写方法实现反转* String -- StringBuilder -- reverse() -- String* C:调用方法* D:输出结果*/
public class StringBuilderTest3 {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//写方法实现反转
//调用方法
String result = myReverse(s);
//输出结果
System.out.println("result:"+result);
}
/** 两个明确:* 返回值类型:String* 参数列表:String*/
public static String myReverse(String s) {
//String -- StringBuilder -- reverse() -- String
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
return result;
}
}

1.3.4 案例四需求:
判断一个字符串是否是对称字符串
例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
1.3.4.1 案例代码十八:

package com.itheima_03;
import java.util.Scanner;/** 判断一个字符串是否是对称字符串* 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串** 分析:* A:键盘录入一个字符串* B:写方法实现判断一个字符串是否是对称字符串* 把字符串反转,和反转前的字符串进行比较,如果内容相同,就说明是对称字符串* C:调用方法* D:输出结果*/
public class StringBuilderTest4 {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//写方法实现判断一个字符串是否是对称字符串
//调用方法
boolean b = isSymmetry(s);
//输出结果
System.out.println("b:"+b);
}
/** 两个明确:* 返回值类型:boolean* 参数列表:String s*/
public static boolean isSymmetry(String s) {
//把字符串反转,和反转前的字符串进行比较,如果内容相同,就说明是对称字符串
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
return result.equals(s);
}
}

转载于:https://blog.51cto.com/13517854/2089481

第3章 StringBuilder类相关推荐

  1. JavaSE_第十一章:常用类

    JavaSE学习历程 第一章:Java初识 第二章:Java语言基础 第三章:选择结构与分支结构 第四章:循环结构 第五章:方法/函数 第六章:数组 第七章:面向对象 第八章:三大特性 第九章:三个修 ...

  2. JavaSE进阶 第七章 常用类 (一) String

    目录 1.注意点 2.String类的构造方法 3.String类的常用方法 传送门 1.注意点 java中用双引号括起来的都是String对象,且字符串是不可变的 java中用双引号括起来的字符串都 ...

  3. C#OOP之十五 String类StringBuilder类

    String类的概述 初次看到String这个词,大家应该都很熟悉.有的同学就会想到:它不就是C#中的一个关键字吗?我们已经接触过了啊,它就是一个数据类型而已,能有何大用?也有细心的同学会发现:这个S ...

  4. C#中的字符串, String类和StringBuilder类

    C#中的字符串, String类和StringBuilder类 1.简介 字符串对大多数计算机程序而言非常普遍. 像文字处理软件和网页应用程序这些程序类型 都广泛采用了字符串. 这使得处理这类应用程序 ...

  5. java学习笔记(13) 第13章 - 常用类

    第13 章常用类-目录 13.1 包装类 13.1.1 包装类的分类.包装类和基本数据的转换.案例演示.课堂测试 13.1.2 包装类型和String 类型的相互转换 13.1.3 Integer 类 ...

  6. 在PHP中实现StringBuilder类

    在PHP中实现StringBuilder类 在asp.net开发开发环境中,有一个StringBuilder类是比较常用的, 这个类用起来可以实现很方便的text文本的操作. 但是在php中,没有这个 ...

  7. java stringbuilder换行_初遇Java StringBuffer 和 StringBuilder 类利用 StringBuilder 给TextView实现换行处理...

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...

  8. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /

    Char类 String类 字符串的格式化:String类的Format方法 StringBuilder类 以上:百度 or 查手册..... 转载于:https://www.cnblogs.com/ ...

  9. C#中StringBuilder类的使用

    String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新 ...

最新文章

  1. python中execute函数_Python 中的内置函数与模块
  2. IIS6 MVC3 配置
  3. 我使用过的Linux命令之sftp - 安全文件传输命令行工具
  4. CDH 组件升级:zookeeper升级到 3.4.14
  5. jq关于对象类型的判断
  6. 如何取得事件中鼠标坐标
  7. 从1.6W名面试者中收集的Java面试题精选汇总(内附知识脑图)
  8. 机器学习基础(十二)—— 数学基本理论拾遗
  9. 循环双链表的手动构建总结
  10. 芯故事 心感动:英特尔企业文化的力量
  11. Nginx源码分析 - HTTP模块篇 - HTTP Request解析过程(22)
  12. 74款android开机动画,修改Android系统开机动画
  13. DM7达梦数据库介绍和安装
  14. php系统不能输入中文,word无法输入汉字 如何解决Word不能输入中文的问题
  15. iOS界面--Tom猫的实现
  16. C语言程序员未来发展前景如何
  17. 计算机网络第五弹——运输层
  18. v7000更换电池步骤_UPS电池更换方案
  19. 关于瞎报Access violation writing location异常的瞎解决方法
  20. 电子科大计算机学院郑欣,我校研究生在“华为杯”第十六届中国研究生数学建模竞赛中获佳绩...

热门文章

  1. Spring3, Hibernate3.6与Proxool连接池配置
  2. 手机实名制的一个应用,电信行业的一个可改进之处
  3. 【转载】常用DOS命令(包括创建删除文件夹/文件)
  4. 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~
  5. [Java][Android] 多线程同步-主线程等待全部子线程完毕案例
  6. 用 openSSL 生成 公钥 私钥
  7. oracle 创建database link
  8. 大型电子商务网站架构之--分布式可扩展数据库架构
  9. 邮件附件在线预览——HTML Filter
  10. [计算数学基础]矩阵微分