D0822-API01

Math类

工具类有:Math , Objects , Arrays , LocalDateTime,

Period , Duration , DateTimeFormatter

Math类中包含一些对数据进行数学运算的方法,而该类中的方法全都是静态的。像这样的类称之为工具类

public static int abs(int a)           //对一个数据求绝对值
public static double ceil(double n)    //对一个小数向上取整
public static double floor(double n)   //对一个小数向下取整
public static int round(double n)      //对一个小数进行四舍五入
public static int max(int a,int b)     //求两个数的最大值
public static int min(int a,int b)     //求两个数的最小值 
public static double random()          //生成[0,1)范围内的随机数

System类

public static void exit(int n)  //退出Java虚拟机,规定当 n=0 时为正常退出
public static long currentTimeMillis()  //获取当前距离1970年1月1日0时0分0秒的毫秒值
public static void arraycopy(Object src, int srcPos,Object dest,int destPos,int lendth)
    把源数组中的元素复制到目标数组中。
    参数:
        src - 源数组。
        srcPos - 源数组中的起始位置。
        dest - 目标数组。
        destPos - 目标数据中的起始位置。
        length - 要复制的数组元素的数量。

Object类

Object是所有类的父类,任何一个子类都可以调用Object的方法。

public String toString()
    把一个对象转换字符串。 字符串格式: 包名+类名@地址值。
    每次打印对象,底层会自动去调用toString()方法。
	注意:自己写的类,如果不想打印地址就可以复写toString()方法  
	快捷键:alt+inert-->toString()

public boolean equals(Object obj)
    用来比较两个对象是否“相等“。
    默认比较的是地址值,底层用的是"=="
    注意:自己写的类,如果不想比较地址值可以重写equals()方法,比较自己的内容.有些类已经重写 toString
    快捷键:alt+inert-->Equals and HashCode

Objects类

Objects类是一个工具类,经常用于对一个对象进行判空的处理。JDK7以后才有的

public static String toString(Object s)
    把一个对象转换为字符串
public static String toString(Object s,String defalutStr)
    把一个对象转换为字符串, 如果对象为null,返回默认字符串
public static boolean isNull(Object s)
    判断一个对象是否为null  等价于 s==null
public static boolean nonNull(Object s)
    判断一个对象不为null	等价于 s!=null

BigDecimal类

BigDecimal可以做一些小数的精确运算,还可做一些较大数据的运算。

public BigDecimal add(BigDecimal augend) 
    对两个数进行加法运算
public BigDecimal subtract(BigDecimal subtrahend)  
    对两个数进行减法运算
public BigDecimal multiply(BigDecimal multiplicand)  
    对两个数进行乘法运算
public BigDecimal divide(BigDecimal divisor)  
    对两个数进行除法运算
public BigDecimal divide(BigDecimal divisor,int num,int type)  
    对两个数进行除法运算,可以保留小数个数.
    参数:
    	BigDecimal divisor: 除数
    	int num:保留小数个数
    	int type: 保留小数的方式
    			BigDecimal.ROUND_HALF_UP	最后一位小数四舍五入	
    			BigDecimal.ROUND_UP	 		最后一位小数不管满不满5都进1  
    			BigDecimal.ROUND_FLOOR 		最后一位小数不管慢不满5都舍弃 
 	
注意:需要运算的两个数,必须先封装尾BigDecimal对象,然后通过上面的方法进行运算。

基本数据类型包装类

每一个基本数据类型都有一个对应的包装类,并且提供了一些方法给开发人员使用。

基本数据类型		包装类
byte			Byte
short			Short
int				Integer
long			Long
float			Float
double			Double
boolean			Boolean
char			Character

获取Integer对象

其他基本数据类型有相似的操作

Integer num1=Integer.valueOf(100);
Integer num2=Integer.valueOf("100");

自动装箱和自动拆箱

为了方便基本数据类型和包装类能够直接运算,Java提供了自动装箱和自动拆箱的机制。

//自动装箱: 基本类型(int) 自动转换为 包装类(Integer)
Integer num=100;
//自动拆箱: 包装类(Integer) 自动转换为 基本类型(int)
int num2=num;

包装类的数据转换

如果一个字符串是纯数字的字符串(如: "12345"),不能做数值的数学运算,必须把字符串转换为数值,才能做数学运算。 这样的转换方法在包装类中已经提供了.

  • 字符串转其他的基本数据类型
//需求1:"12345"转换为12345
int num1=Integer.parseInt("12345");

//需求2: “3.14”转换为3.14
double num2=Double.parseDouble("3.14");

//需求3: "6.88"转换为6.88
float num3=Float.parseFloat("6.88");

...
  • 其他类型转换为字符串
1.直接和""做拼接,因为任何一个数据和字符串做拼接结果都是字符串
	String s=100+"";

2.可以使用String类的valueOf方法
	String s1=String.valueOf(100);
	String s2=String.valueOf(3.14);

数组的高级操作

二分查找

二分查找对于数组中的元素必须要有从小到大的顺序,否则不能做二分查找。

二分查找的思路:
	1.获取数组的开始和结束的索引
		int start=0;
		int end=array.length-1;
	2.循环的获取start和end中间的元素
		int mid=(start+end)/2;
	3.让array[mid]和目标数据进行比较
		大了:end=mid-1;
		小了:start=mid+1;
		中了: 直接返回mid
		
Arrays 类中为二分查找提供了 public static int binarySearch(int[] array,int key)  方法
       并为数组的排序提供了 public static void sort(int[] array)  方法

冒泡排序

把相邻的两个元素进行比较,把大的往后放。

1.如果数组的长度为n,一共要比较n-12.每一轮比较的次数比上一轮少1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7dUV9HI-1598542320575)(assets/1598085280514.png)]

//对数组进行排序
public static void sort(int[] array){
    //1.数组的长度为array.length,比较的轮数是 array.length-1
    for(int i=0;i<array.length-1;i++){
        //2.每一轮比较的次数比上一轮少一次
        for(int j=0;j<array.length-1-i;j++){
            //相邻的元素进行比较,大的往后放
            if(array[j]>array[j+1]){
                int temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
    }
}

Arrays类

Arrays是一个工具类。Arrays类中提供了一些对数组进行操作的方法(比如:查找和排序)

public static int binarySearch(int[] array,int key)
    对数组的元素进行二分查找
public static void sort(int[] array)
    对数组进行排序。
public static String toString(int[] array)
    把数组转换为字符串  格式:"[元素1,元素2,元素3]"

递归

方法自己调用自己,这种方式叫做递归。

public static void main(String[] args) {
    int sum = getSum(5);
    System.out.println(sum);
}
//方法:求1~n的和
public static int getSum(int n){
    if(n==1){
        return 1;
    }else {
        return getSum(n-1)+n; //n-1以内的和加上n,如:(1+2+3+4)+5
    }
}

ring[] args) {
int sum = getSum(5);
System.out.println(sum);
}
//方法:求1~n的和
public static int getSum(int n){
if(n==1){
return 1;
}else {
return getSum(n-1)+n; //n-1以内的和加上n,如:(1+2+3+4)+5
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值