常用API-2
Math
包含执行基本数字运算的方法
没有构造方法,类的成员都是静态,通过类名直接调用
成员方法:
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a) 向上取整
public static double floor(double a) 向下取整
public static int round(float a) 四舍五入
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow(double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0)
System
System 不能被实例化
成员方法:
public static void exit(int status) 终止当前运行的 Java 虚拟机,非零表示异常终止
例:System.exit(0); //0表示正常终止(一般用0);非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)
1 long start = System.currentTimeMillis();//获取当前时间 2 for (int i = 0; i < 10000; i++) { 3 System.out.println(i); 4 } 5 long end = System.currentTimeMillis();//获取当前时间 6 System.out.println(end - start);//472 --- 得到的就是这个for循环运行的时间.
public static void arraycopy(数据源数组, 源数组起始索引, 目的地数组, 目的地起始索引, 拷贝个数) 数组copy
1 int [] arr1 = {1,2,3,4,5}; 2 int [] arr2 = new int[10]; 3 //需求:把arr1中的数据拷贝到arr2中. 4 //System.arraycopy(arr1,0,arr2,0,arr1.length); 5 6 //把arr1最后两个元素,拷贝到arr2的最后两个索引上 7 System.arraycopy(arr1,3,arr2,8,2); 8 for (int i = 0; i < arr2.length; i++) { 9 System.out.println(arr2[i]); 10 }
Object
Object类是所有类的直接或者间接父类。
构造方法:public Object()
问:面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?
答:它们的顶级父类只有无参构造方法
常用方法
public String toString() 返回对象的字符串表示形式
直接打印一个对象就是打印这个对象的toString方法的返回值:底层使用Object类的toString方法得到对象的地址值。
1 public static void main(String[] args) { 2 Student s = new Student("张三",23); 3 System.out.println(s); //com.ceshi.demo1.Student@3f3afe78 4 }
因为无意义,所以我们一般会对toString方法进行重写,可自动生成
1 public class Student /*extends Object*/{ 2 private String name; 3 private int age; 4 5 @Override 6 public String toString() { 7 return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; 8 } 9 }
1 public static void main(String[] args) { 2 System.out.println(s.toString()); //Student{name='张三',age=18} 3 }
public boolean equals(另一个对象) 比较对象是否相等。默认比较地址,重写可以比较内容,自动生成
1 public static void main(String[] args) { 2 Student s1 = new Student("zhangsan",23); 3 Student s2 = new Student("zhangsan",23); 4 5 System.out.println(s1 == s2);//false 6 //Object类中的equals方法,底层也是用==号比较地址值. 7 System.out.println(s1.equals(s2));//false 8 }
需重写该方法进行比较内容,自动生成。
面试题
1 String s = “abc”; 2 StringBuilder sb = new StringBuilder(“abc”); 3 s.equals(sb); ? 4 sb.equals(s); ?
1 public static void main(String[] args) { 2 String s = "abc"; 3 StringBuilder sb = new StringBuilder("abc"); 4 //1.此时调用的是String类中的equals方法:源码如下图,equals()的()里传入的参数应该也是字符串,否则不会比较直接返回false。当前传入的参数sb是StringBuilder所以返回false。 5 System.out.println(s.equals(sb)); //false 6 7 //2.StringBuilder类中是没有重写equals方法,用的就是Object类中的==比较地址值,s与sb地址值不同,所以返回false 8 System.out.println(sb.equals(s)); //false 9 }
String中的equals()方法:
Objects(1.7后出现)
成员方法:
public static String toString(对象) 返回参数中对象的字符串表示形式。(同Object的toString()方法)
public static String toString(对象, 默认字符串) 返回对象的字符串表示形式。如果对象为空,那么返回第二个参数。
public static Boolean isNull(对象) 判断对象是否为空
public static Boolean nonNull(对象) 判断对象是否不为空
BigDecimal
作用:可以用来精确计算
构造方法:
BigDecimal(double val) 参数为double。
BigDecimal(String val) 参数为String。(如果想进行精确运算,使用字符串参数的构造方法)
成员方法:
public BigDecimal add(另一个BigDecimal对象) 加法
public BigDecimal subtract (另一个BigDecimal对象) 减法
public BigDecimal multiply (另一个BigDecimal对象) 乘法
public BigDecimal divide (另一个BigDecimal对象) 除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) 除法
常用舍入模式: BigDecimal.ROUND_UP 进一法
BigDecimal.ROUND_FLOOR 去尾法
BigDecimal.ROUND_HALF_UP 四舍五入
例:BigDecimal divide = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);
Arrays
包含用于操作数组的各种方法
成员方法:
public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
public static void sort(int[] a) 按照数字顺序排列指定的数组
public static int binarySearch(int[] a, int key) 利用二分查找返回指定元素的索引
条件:1.数组必须有序
2.如果要查找的元素存在,那么返回的是这个元素实际的索引
3.如果要查找的元素不存在,那么返回的是 (-插入点-1):(为什么-插入点-1,如果查找0所在索引,-0=0,所以为避免此类问题,整体进行-1,使得0所在索引为-0-1=-1)
插入点:如果这个元素在数组中,他应该在哪个索引上
1 public static void main(String[] args) { 2 int [] arr = {1,2,3,4,5,6,7,8,9,10}; 3 int index = Arrays.binarySearch(arr, 10); //9 4 int index = Arrays.binarySearch(arr, 11); //-11 5 int index = Arrays.binarySearch(arr, 0); //-1 6 System.out.println(index); 7 }