目录
2.String、StringBuilder、StringBuffer的比较:
一.StringBuffer类:
1.基本介绍:
- StringBuffer代表可变的字符序列,可以对字符串内容进行增删。StringBuffer是可变长度的。StringBuffer是一个final类,不能被继承。
- StringBuffer实现了Serializable,即StringBuffer的对象可以串行化(串行化:可以在网络中传输)。
- StringBuffer的直接父类是AbstractStringBuilder,在父类中有属性char [ ] value,不是final ,该value数组存放字符串内容,引出存放在堆中的。
- StringBuffer的更新不用每次更改地址,效率较高。因为StringBuffer的字符序列是存在char [ ] value,不是每次都创建新的对象。(String的value数组更新时,value指向的常量池的地址会发生改变,value自己本身的地址不会发生改变,会产生一个新的对象去指向value)
2.StringBuffer的构造器:
3.String与StringBuffer的相互转换:
(1)String->StringBuffer
方式一:返回的是才StringBuffer对象,对String本身没有影响。
方式二:使用的是append方法
(2)StringBuffer->String
方式一:使用StringBuffer提供的toString方法
方法二:使用构造器
4.StringBuffer的方法:
String str = nill;
StringBuffer sb = new StringBuffer();
sb.append(str);//底层调用的是AbstractStringBuilder的appendNull方法,将null添加到字符数组里面
System.out.println(sb.length());//4
StringBuffer sb = new StringBuffer(str);//底层源码super.(str.length()+16);抛出空指针异常。
二.StringBuilder:
1.基本介绍:
- StringBuilder是一个可变的字符序列,用在字符缓冲区被单个线程使用的时候。(但是不可以保证线程安全,在单线程的时候使用)。
- StringBuffer实现了Serializable,即StringBuffer的对象可以串行化(串行化:可以在网络中传输,也可以保存到文件)。
- StringBuffer是一个final类,不能被继承。StringBuffer的直接父类是AbstractStringBuilder,在父类中有属性char [ ] value,不是final ,该value数组存放字符串内容,引出存放在堆中的。
2.String、StringBuilder、StringBuffer的比较:
三.Math类:
1.基本介绍:
Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
2.Math的常用方法:
- ceil向上取整,返回大于等于该参数的最小整数(double)
- floor向上取整,返回小于等于该参数的最大整数(double)
- random返回的是0-1之间的随机小数(0<=x<1),获取a-b之间的随机整数:(int)(a+Math.random()*(b-a+1));
四.Arrays类:
1.基本介绍:
Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和收缩)。
2.Arrays的基本方法:
Integer [] integer = {1,20,90};
//遍历数组:
for(int i=0;i<integer;i++){
System.out.pritln(integer[i])
}
System.out.pritln(Arrays.toString(integer));//[1,20,90]
//sort排序
Integer arr [] = {1,-1,7,0,89};
//冒泡排序:
public static bubble02(Integer [] arr,Comparetor c){
Integer temp = 0;
for(int i = 0;i<arr.length();i++){
for(int j= 0;j<arr.length-1-i;j++){
//if(arr[j]>arr[j+1]){//从小到大
if(c.compare(arr[j],arr[j+1])>0){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
bubble02(arr,new Comparator){
public int compare(Object o1,Object o2){
int i1 = (Integer)o1;
int i2 = (Integer)o2;
return i1-i2;//升序//return i2-i1-降序
}
)};
Arrays.sort(arr);//数组为引用类型,通过方法排序后会影响到实参
System.out.pritln(Arrays.toString(arr));默认为升序
//可以通过传入一个接口Comparator实现定制排序
Arrays.sort(arr,new Compatator(){
public int compare(Object o1,Object o2){
Integer i1 = (Integer) 01;
Integer i2 = (Integer) 02;
return i2-i1;
}
});
//binarySearch--通过二分搜索进行查找,要求必须排好序
Integer [] arr = {1,2,35,67};
int index = Arrays.binarySearch(arr,1);//0,返回数组索引的值
//copyOf数组元素的复制:
Integer [] arr = {1,2,35,67};
Integer [] newarr = Arrays.copyOf(arr,arr.length);
Integer [] newarr = Arrays.copyOf(arr,arr.length-1);//{1,2,35}
Integer [] newarr = Arrays.copyOf(arr,arr.length+1);//{1,2,35,67,null}
System.out.println(Arrays.toString(newArr));//{1,2,35,67}
//数组填充:
Integer [] arr = {1,2,35,67};
//fill数组元素的填充
Integer [] num = new Integer[]{9,3,2};
Arrays.fill(num,5);
System.out.println(Arrays.toString(num));//[5,5,5]
//equals比较两个数组元素内容是否完全一致,一致返回true,不一致返回false
Integer [] arr1 = {1,2,3,6};
Integer [] arr2 = {1,2,90,123};
boolean equals = Arrays.equals(arr1,arr2);
System.out.println(equals);
//aslist将一组数据转换为List
List aslist = Arrays.asList(2,3,4,5,6);
System.out.println("aslist"+ aslist);//[2,3,4,5,6]
System.out.println("aslist的运行类型"+aslist.getClass());//Array类的一个静态内部类ArrayList,编译类型为List