Math类

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

 1 public static int abs(int a)
 2     对一个数据求绝对值
 3 public static double ceil(double n)
 4     对一个小数向上取整  4.3 --> 5.0
 5 public static double floor(double n)
 6     对一个小数向下取整  4.3 --> 4.0
 7 public static long round(double n)
 8     对一个小数进行四舍五入    4.3 --> 4    ;  4.5 --> 5
 9 
10 public static int max(int a,int b)
11     求两个数的最大值
12 public static int min(int a,int b)
13     求两个数的最小值
14     
15 public static double random()
16     生成[0,1)范围内的随机数

System类

 1 public static void exit(int n)
 2     退出Java虚拟机   //System.exit(0);
 3     
 4 public static long currentTimeMillis()
 5     获取当前时间的毫秒值,距离1970年1月1日0时0分0秒之间的毫秒值
 6     
 7 public static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length)
 8     把源数组中的元素复制到目标数组中。
 9     参数:
10         src - 源数组。
11         srcPos - 源数组中的起始位置。
12         dest - 目标数组。
13         destPos - 目标数据中的起始位置。
14         length - 要复制的数组元素的数量。
15     
16     int[] arrayA={1,2,3,4,5};
17     int[] arrayB=new int[2];
18     //把arrayA中的3和4这两个元素,赋值到arrayB中
19     System.arraycopy(arrayA,2,arrayB,0,2); 

Object类

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

 1 public String toString()
 2     把一个对象转换字符串。 字符串格式: 包名+类名@地址值。
 3     每次打印对象,底层会自动去调用toString()方法。
 4     注意:自己写的类,如果不想打印地址就可以复写toString()方法  
 5     快捷键:alt+inert-->toString()
 6     
 7 
 8 public boolean equals(Object obj)
 9     用来比较两个对象是否“相等“。
10     默认比较的是地址值,底层用的是"=="
11     注意:自己写的类,如果不想比较地址值可以重写equals()方法,比较自己的内容.
12     快捷键:alt+inert-->Equals and HashCode

Objects类

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

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

BigDegimal类

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

构造方法

1 public BigDecimal(double val)
2     使用double类型的小数,创建BigDecimal对象
3 public BigDecimal(String val)  
4      使用String类型的数据(必须是纯数字),创建BigDecimal对象

四则运算的方法

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

基本数据类型包装类

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

1 基本数据类型        包装类
2 byte            Byte
3 short            Short
4 int                Integer
5 long            Long
6 float            Float
7 double            Double
8 boolean            Boolean
9 char            Character

获取Integer对象

1 Integer num1 = Integer.valueOf(100);
2 Integer num2 = Integer.valueOf("100");
3 
4 //如果数据在-128~127范围内,得到的对象是同一个; 否则就是重新创建的对象.

自动装箱和自动拆箱

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

1 //自动装箱: 基本类型(int) 自动转换为 包装类(Integer)
2 Integer num=100;  //等价于 Integer num = Integer.valueOf(100);
3 
4 //自动拆箱: 包装类(Integer) 自动转换为 基本类型(int)
5 int num2=num;    //等价于 int num2 = num.intValue();

包装类的数据转换

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

字符串转其他的基本数据类型

 1 【口诀】:想要转为什么类型就找什么类型的包装类,调用parseXxx方法
 2 
 3 //需求1:"12345"转换为12345
 4 int num1=Integer.parseInt("12345");
 5 
 6 //需求2: “3.14”转换为3.14
 7 double num2=Double.parseDouble("3.14");
 8 
 9 //需求3: "6.88"转换为6.88
10 float num3=Float.parseFloat("6.88");
11 
12 ...

其他类型转换为字符串

1 1.直接和""做拼接,因为任何一个数据和字符串做拼接结果都是字符串
2     String s=100+"";
3 
4 2.可以使用String类的valueOf方法
5     String s1=String.valueOf(100);
6     String s2=String.valueOf(3.14);

Arrays类

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

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

数组的高级操作

二分查找

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

 1 二分查找的思路:
 2     1.获取数组的开始和结束的索引
 3         int start=0;
 4         int end=array.length-1;
 5     2.循环的获取start和end中间的元素
 6         int mid=(start+end)/2;
 7     3.让array[mid]和目标数据进行比较
 8         大了:end=mid-1;
 9         小了:start=mid+1;
10         中了: 直接返回mid
 1 //对一个数组进行二分查找,查找元素对应的索引
 2 public static int binarySerach(int[] array,int key){
 3     //获取数组的开始和结束的索引
 4     int start=0;
 5     int end=array.length-1;
 6     
 7     //循环的获取start和end中间的元素
 8     while(start<end){
 9         //获取中间的元素索引
10         int mid=(start+end)/2;
11         if(array[mid]>key){
12             end=mid-1;
13         }else if(array[mid]<key){
14             start=mid+1;
15         }else{
16             return mid; 
17         }
18     } 
19     return -1; //没有找到元素  
20 } 

冒泡排序

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

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

递归

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

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

原文地址:https://www.cnblogs.com/xujun168/p/14787344.html