------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a
href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1、StringBuffer
1.String类的特点:不变性
sop("abc"+"def"+"ww")资源浪费,内存空间
空间的浪费,降低程序的运行速度
StringBuffer类的出现,提高字符串的操作效率
字符串的缓冲区对象
2、StringBuffer类的特点
1. 线程安全
2. 可变的字符序列(字符数组)
String类的底层数据实现结构就是char数组
private final char[] value
StringBuffer类底层数据实现结构是 char数组
但是这个数组,没有final
是一个可变的字符数组(技术,数组的复制技术)
数组的长度"扩容",复制技术,StringBuffer自动实现
3、StringBuffer类的构造方法
1. StringBuffer() 空参数的
new StringBuffer对象的时候,什么参数都不传递
默认的初始化容量,16个字符
2. StringBuffer(int n)带有1个int参数
new StringBuffer(10) 字符数组的指定长度
没有必要,自己会复制扩容
3. StringBuffer(String s)带有1个String参数
new StringBuffer("a") 将字符串对象直接存储到缓冲区
程序Demo:
4、StringBuffer类的添加方法
1. StringBuffer append(任意类型数据)将任意类型的数据追加到缓冲区中
2. StringBuffer insert(int index,任意数据类型)
将任意数据类型,插入到指定索引上.
注意:索引越界异常
程序Demo:
6. StringBuffer类的替换方法
1. StringBuffer replace(intstart,int end, String str)
int start 开始的索引
int end 结束的索引
规定:开始和结束索引,包含头,不包含尾
String str 被替换后的字符串,会将指定的索引范围之内的内容,
全部替换成指定的字符串
程序Demo:
7. StringBuffer类的翻转方法
1. StringBuffer reverse()
将字符串缓冲区中的字符,进行翻转
程序Demo:
8. StringBuffer类的截取方法
1. String substring(int start,int end)
int start 开始的索引
intend 结束的索引
规定:开始和结束索引,包含头,不包含尾
截取缓冲区中的部分字符,返回新的字符串对象
程序Demo:
9、String对象和StringBuffer对象相互转换
String类对象是一个不变对象
StringBuffer类对象是一个可变对象
1. String对象如何转成StringBuffer对象
StringBuffer类的构造方法
StringBuffer类的方法append
程序Demo:
2. StringBuffer对象如何转成String对象
StringBuffer类的方法toSting
String s=sb.toString
StringBuffer bs=new StringBufer("abcs")
StringBuffer类继承Object类,重写父类方法toString
String类的构造方法,传递StringBuffer对象
程序Demo:
10. 数组元素拼接成字符串
"数组元素"+"数组元素" 空间浪费
使用StringBuffer缓冲区
程序Demo:
12. 判断字符串对称(回文)
翻转前后,字符串保持一致,相同
字符串变成缓冲区String->StringBuffer->翻转StringBuffer->String->equals
另外的一种方式
利用数组实现,数组的最远端的元素比较
数组翻转
13.StringBuilder类
也是字符串缓冲区对象,提高String对象操作效率
出现的版本, JDK1.5才出现
StringBuffer类和StringBuilder类方法,完全一样
两个类的使用方式,完全一样
区别:
StringBuffer 类线程安全 --运行速度慢
StringBuilder类线程不安全 --运行速度快
StringBuilder在JDK1.5后,将StringBuffer进行替换
14. length属性和length()方法区别
length属性:数组的
length()方法: String类,和StringBuffer,StringBuilder
length属性:数组的长度
length()方法:字符串长度,缓冲区的长度
15. 数组的高级操作
1. 数组的排序
数组的排序,按照升序排列 ,从小到大排列
第一种:选择排序法
第二种:冒泡排序法
2. 选择排序
定义了数组,使用选择排序法,将数组中的元素进行升序的排列
所有的排序:比较元素,进行位置上的交换
采用数组中的每个元素,都和其他的元素进行比较换位置
3. 冒泡排序
采用,数组相邻位置,比较和换位
4. 数组的基本查找
有1个数组,找一个元素是不是存在于数组中
如果存在,返回所在的索引
如果不存在,返回负数
5. 数组的二分查找,或者折半
前提:保证数组的有序排列
从数组的中间位置查找,每次减少一半
程序Demo:
如果数组是别人提供的,是无序数组,不要排序,不要使用折半查找,只能基本查找
int[] arr = {50,20,5,30};
今年4个季度的销售额
16. 数组工具类
Sun公司,写好了一个专门操作数组的工具类
java.util.Arrays
方法全是静态,直接类名.方法
1. 排序方法
static void sort(数组)
2. 二分查找方法
static int binarySearch(数组,被查找的元素)
3. 数组转成字符串
static String toString(数组)
4. 数组转成集合
static List asList(数组)
17. 基本数据类型对象包装类
Java技术里面,8种基本数据类型,将8个基本类型进行对象的封装,基本数据类型变成了对象,提高更多的方法来操作这些基本类型
8个基本类型,对应了8个包装类,全部在lang包中
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本类型int,能不能转成字符串
"1"字符串转成基本类型int
18. Integer类的方法
static intparseInt(String s) 将数字格式的字符串,转成基本类型int
程序Demo: