Java学习16

目录

一.StringBuffer类:

1.基本介绍:

2.StringBuffer的构造器:

3.String与StringBuffer的相互转换:

(1)String->StringBuffer

(2)StringBuffer->String

4.StringBuffer的方法:

二.StringBuilder:

1.基本介绍:

2.String、StringBuilder、StringBuffer的比较:

三.Math类:

1.基本介绍:

2.Math的常用方法:

四.Arrays类:

1.基本介绍:

2.Arrays的基本方法:


一.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值