数组的api-Arrays
数组转字符串
数组全部元素设置默认值
数组copy
System.arrayCopy -->设置copy范围,copy新数组位置时候使用
Arrays.copyOf-->copy全部内容使用
数组排序 sort
a)基本类型--》直接用
b)引用类型:提供比较大小的方法-给sort使用
1)利用Comparable接口---》数组元素自己类实现该接口-》提供比较大小的方法compareTo
2)利用Comparetor接口---》新定义类实现该接口-》提供比较大小的方法compare
数组二分法查找
1)先排序 2)再使用
数组的扩展知识
增强for(foreach)
语法:
for(元素类型 元素变量 :容器(数组,list,set)对象){
}
执行的过程:循环执行,循环容器元素的数量次。依次把容器里第一个到最后一个元素
分别赋值给元素变量。
作用:快速遍历容器的元素。
注意:遍历容器的元素--》只能做读取容器元素的操作,不能设置元素。
可变参数
是什么?--》是一种特殊的【参数】--【数据类型】,类似于数组类型。
语法:
1)数组元素类型 ... 参数名
2)方法只能定义一个可变参数,并且必须最后一个
特殊之处
1)方法内使用参数:就是一个数组类型
2)方法调用的时候赋值:
a)传递数组
b)传递数组的元素(0到多个,通过逗号分割)
各字符串对比
String:不可变字符串
StringBuilder:可变字符串,线程不安全,速度快
StringBufferer:可变字符串,线程安全,速度慢
不可变字符串:自身更改的操作都会产生新的字符串对象返回,自己内容不做更改。
可变字符串:自身更改的操作可以直接把自己内容做更改。
String常用api
concat(了解即可)连接字符串
转大小写
StringBuilder和bufferer的功能(api基本相同)
常用api
追加(连接字符串)
删除--》删除一个范围的内容
插入
替换--》替换一个范围的内容
反转
字符串拼接对比
String +
StringBuilder append
StringBufferer append
速度对比
StringBuilder略大于StringBufferer远大于String
怎么选择?
1)多线程--》StringBufferer
2)单线程
拼接数量多-》StringBuilder
拼接数量少-》String