Java SE 进阶day04

本文详细介绍了Java中的System类、BigDecimal类、包装类(包括Integer类)以及Arrays类的常用方法,涉及自动装箱拆箱、equals方法、基本类型与字符串转换、排序算法(如冒泡、选择和二分查找)以及正则表达式的概念。
摘要由CSDN通过智能技术生成

第二章 常用API

01.System类

1.介绍

System的功能是静态的,都是直接用类名调用.

2.常见方法

常见方法如下 :

方法名说明
public staic void exit(int staus)终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前系统时间的毫秒值形式
public static void arraycopy(数据源, 起始索引,目的数组,起始索引,拷贝个数)数组拷贝

02.BigDecimal类

1.介绍

用于解决浮点型运算精度失真的问题

2.创建对象的细节

为了防止精度丢失,禁止使用BigDecimal(double)方法将double对象转换为BigDecimal,建议使用BigDecimal的valueOf方法

public static BigDecimal valueOf(double val) //包装浮点数为BigDecimal对象

3.常见方法

方法名说明
public BigDecimal add(BigDecimal b)加法
public BigDecimal subtract(BigDecimal b)减法
public BigDecimal multiply(BigDecimal b)乘法
public BigDecimal devide(BigDecimal b)除法
public BigDecimal devide(另一个BigDecimal b对象,精确几位,舍入模式)除法
public class Test {
    public static void main(String[] args) {
        BigDecimal bd1 = BigDecimal.valueOf(10.0);
        BigDecimal bd2 = BigDecimal.valueOf(3.0);

        //加法
        double result1 = bd1.add(bd2).doubleValue();
        System.out.println(result1);
        //减法
        double result2 = bd1.subtract(bd2).doubleValue();
        System.out.println(result2);
        //乘法
        double result3 = bd1.multiply(bd2).doubleValue();
        System.out.println(result3);
        //除法
        BigDecimal result4 = bd1.divide(bd2, 2, RoundingMode.HALF_UP);//四舍五入法保留两位小数
        System.out.println(result4);
        BigDecimal result5 = bd1.divide(bd2, 2, RoundingMode.UP);//进一法保留两位小数
        System.out.println(result5);
        BigDecimal result6 = bd1.divide(bd2, 2, RoundingMode.DOWN);//去尾法保留两位小数
        System.out.println(result6);
    }
}

03.包装类

1.介绍:

将八种基本数据类型,包装成类,成为引用数据类型

好处 : 类中有方法,可以提供很多方便的操作

2.分类

基本类型对应的包装类(位于java.lang包)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

3.Interger类

创建对象的常见方法:

方法名说明
public static Integer valueOf(int i)返回表示指定的int值的Integer实例
public static Integer valueOf(String s)返回保存指定的String 值的Integer对象

4.自动装箱和拆箱

  1. 自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量。
  2. 自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量
Integer i = 4;  

//自动装箱。Integer i = Integer.valueOf(4);

----------------------------------------------------------------
i = i + 5;   
//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。

5.面试题

看程序说结果

public class Test {
    public static void main(String[] args) {
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));

        System.out.println("----------------------");

        Integer i3 = 129;
        Integer i4 = 129;
        System.out.println(i3==i4);
        System.out.println(i3.equals(i4));
    }
}
/*
        Integer重写过equals方法,因此i1和i3调用equals方法分别和i2,i4比较时,结果为true
        Integer i1 =127,Integer i2 = 127; Integer i3 = 129,Integer i4 = 129;这四句话会进行自动装箱
        Integer在自动装箱时,会调用public static Integer valueOf (int i)方法来将接收到的数据包装成Integer类
        valueOf方法在接收到数据之后,会先判断这个数据是不是-128到127之间,如果在这个区间内,就会将底层缓存数组中对应索引取出(i+128)
        如果不是这个区间内的值,就重新开辟一个新的空间存储.

        目的是为了节约内存,因为-128到127这个范围内的数使用较为频繁
 */

6.基本类型和字符串之间的转换

方法名说明
public static byte parseByte(String s)将字符串参数转换为对应的byte基本类型。
public static short parseInt(String s)将字符串参数转换为对应的short基本类型。
public static short parseShort(String s)将字符串参数转换为对应的int基本类型。
public static short parseLong(String s)将字符串参数转换为对应的long基本类型。
public static short parseFloat(String s)将字符串参数转换为对应的float基本类型。
public static short parseDouble(String s)将字符串参数转换为对应的double基本类型。
public static short parseBoolean(String s)将字符串参数转换为对应的boolean基本类型。

Character不可以将字符串转换为对应的基本类型

04.Arrays类介绍

1.介绍:

方法名说明
public static String toString(类型[] a)将数组元素拼接为带有格式的字符串
public static boolean equals(类型[] a, 类型[] b)比较两个数组内容是否相同
public static int binarySearch(int[] a, int key)查找元素在数组中的索引(二分查找法)
public static void sort(类型[] a)对数组进行默认升序排序

2.冒泡排序

​ 相邻的两个数进行比较, 如果第一个比第二个大, 就交换他们两个

public class BubbleSort {
    public static void main(String[] args) {
        int arr[] = {11,55,44,22,33};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                int temp;
                if (arr[j]>arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

3.选择排序

从 0 索引开始,拿着每一个索引上的元素跟后面的元素依次比较

public class SelectSort {
    public static void main(String[] args) {
        int arr[] = {11,55,44,22,33};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                if (arr[i] > arr[j]){
                    int temp;
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

4.二分查找(折半查找)

二分查找的前提 : 必须是排好序的数据

1.定义两个变量记录最小索引, 和最大索引

2.折半的动作不止一次, 应该使用循环

条件 while(min <= max)

3.循环中计算出中间索引

4.加入判断

  • 元素如果大于中间元素 : min = mid + 1;
  • 元素如果小于中间元素 : max = mid – 1;
  • 元素如果等于中间元素 : 将索引返回 (mid)
 public static int BinarySearch(int arr[] , int num){
        int min = 0;
        int max = arr.length - 1;
        while (min<=max){
            int mid = (min + max)/2;
            if (num < arr[mid]){
                max = mid - 1;
            }else if(num > arr[mid]){
                min = mid + 1;
            }else {
                return mid;
            }
        }
        return -1;
    }

5.正则表达式

正则表达式 :

本质来说就是一个字符串, 可以指定一些规则, 来校验其他字符串

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值