1. API——Math
Math类 包含执行基本数字运算的方法
Math类中无构造方法(构造方法私有化),但内部的方法都是静态的,则可以通过 类名.进行调用
Math类的常用方法:
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,向上取整 |
public static double floor(double a) | 返回小于或等于参数的最大double值,向下取整 |
public static int round(float a) | 按照四舍五入返回最接近参数的int |
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) |
public static double sqrt(double a) | 返回double值,a的平方根 |
示例代码:
public static void main(String[] args) {
//public static double ceil(double a)
double a = 11.1;
double ceil = Math.ceil(a);
System.out.println(ceil);//12.0
//public static double floor(double a)
double b = 11.9;
double floor = Math.floor(b);
System.out.println(floor);//11.0
//public static int round(float a)
float a1 = 5.67F;
int round = Math.round(a1);
System.out.println(round);//6
//public static double random() [0.0,1.0)
double random = Math.random();
System.out.println(random);//0.24202400282124625
}
2. API——System
System类中无构造方法(构造方法私有化),但内部的方法都是静态的,则可以通过 类名.进行调用
System类常用方法:
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的 Java 虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
arraycopy(数据源数组, 起始索引, 目标数组, 起始索引, 拷贝个数) | 数组复制 |
示例代码:
public static void main(String[] args) {
new Random().nextInt(10000);
int[] arr = new int[10000];
ArrayList<Integer> list = new ArrayList<>();
long l1 = System.currentTimeMillis();
for (int i = 0; i <10000 ; i++) {
arr[i] = new Random().nextInt(10000);
}
long l2 = System.currentTimeMillis();
for (int i = 0; i <10000 ; i++) {
list.add(new Random().nextInt(10000));
}
long l3 = System.currentTimeMillis();
System.out.println("数组存10000个数耗时:" + (l2-l1));//10毫秒
System.out.println("集合存10000个数耗时:" + (l3-l2));//4毫秒
//数组复制
int[] arr1 = new int[10];
System.arraycopy(arr, 100, arr1, 0, 10);
for (int i : arr1) {
System.out.println(i);
}
}
3. API——Object
所有类都直接或者间接的继承自Object,Object所具备的方法,所有类都会有一份
构造方法:public Object(){}(所有的类都会默认调用父类无参构造,因为顶级父类Object只有无参构造)
println的原码:实际上是调用Object中的toString方法默认返回的是地址值,若不想打印对象的地址值,可以在自定义的类中重写Object中的toString方法
Object中的equals方法:用于对象之间的比较,默认比较二者的地址值,重写后比较的是对象的属性
equals方法常见面试题:
- String类重写了equals方法,虽然比较的是字符串内容是否相等,但是首先需要比较类型(StringBuilder类型和String类型字符串比较即使内容相同也会返回false)
- StringBuilder类中没有重写equals方法,使用的是Object类中equals方法,比较的是地址值
4. API——Objects
此类包含static
实用程序方法,用于操作对象或在操作前检查某些条件
构造方法:无构造方法,内部方法都为静态方法,可以通过 类名.进行调用
Objects常用方法:
方法名 | 说明 |
---|---|
public static String toString(对象) | 返回参数中对象的字符串表示形式。 |
public static String toString(对象, 默认字符串) | 如果第一个参数不是 |
public static Boolean isNull(对象) | 判断对象是否为空 |
public static Boolean nonNull(对象) | 判断对象是否不为空 |
public static void main(String[] args) {
Student stu1 = new Student("李白", 56);
//调用Student类中的toString方法
String str1 = Objects.toString(stu1);
System.out.println(str1);//Student{name='李白', age=56}
System.out.println("==============================");
Student stu2 = new Student();
String str2 = Objects.toString(stu2, "君不见黄河之水天上来");
System.out.println(str2);//Student{name='null', age=0}
//若对象为null,返回第二个参数
stu2 = null;
String str3 = Objects.toString(stu2, "君不见黄河之水天上来");
System.out.println(str3);//君不见黄河之水天上来
}
5. API——BigDecimal
BigDecimal作用:用于精确计算(构造方法使用参数类型为字符串)
构造方法:BigDecimal(double val)和 BigDecimal(String val)
BigDecimal常用方法:
方法名 | 说明 |
---|---|
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 四舍五入
案例练习:
- 定义一个double类型的数组 double[] array={0.1, 0.2, 2.1, 3.2, 5.56, 7.21};
- 使用BigDecimal求数组中元素的平均值,保留2位小数舍入模式:四舍五入
- 注意:每一个元素都需要封装为BigDecimal对象才能进行运算,运算的结果也是BigDecimal对象
import java.math.BigDecimal;
public class Exercise02 {
public static void main(String[] args) {
double[] array = {0.1, 0.2, 2.1, 3.2, 5.56, 7.21};
//1.定义一个求和变量,精确的值就需要精确的BigDecimal
BigDecimal sum = new BigDecimal("0");
for (int i = 0; i < array.length; i++) {
//2.将数组中的数拿出来转换成BigDecimal形式
double num = array[i];
String strNum = String.valueOf(num);
//3.累加
sum = sum.add(new BigDecimal(strNum));
}
//4.求平均值,保留2位小数
int length = array.length;
String strLength = String.valueOf(length);
BigDecimal avg = sum.divide(new BigDecimal(strLength), 2, BigDecimal.ROUND_HALF_UP);
System.out.println(avg);
}
}
6. 基本数据类型包装类
把基本数据类型包装为对象,可以在对象中定义更多的功能方法操作该基本数据类型。常用的操作之一:基本数据类型与字符串之间的转换
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer类构造方法:
- public static Integer valueOf(int i)
- public static Integer valueOf(String s)
自动装箱:把基本数据类型转换为对应的包装类类型
自动拆箱:把包装类类型转换为对应的基本数据类型
Integer i = 100; // 自动装箱
i += 200; // i = i + 200; i + 200 自动拆箱;i = i + 200; 是自动装箱
int 类型转换为String类型:
- 方式一:直接在数字后加一个空字符串
- 方式二:通过String类静态方法valueOf()
public static void main(String[] args) {
//int --- String
int number = 100;
//方式1
String s1 = number + "";
System.out.println(s1);
//方式2
//public static String valueOf(int i)
String s2 = String.valueOf(number);
System.out.println(s2);
}
String 类型转换为int类型:
- 方式一:先使用 valueOf() 将字符串数字转成Integer对象,再调用 intValue() 方法返回int型
- 方式二:通过Integer静态方法parseInt()进行转换
public static void main(String[] args) {
String s = "100";
//方式1:String --- Integer --- int
Integer in = Integer.valueOf(s);
//public int intValue()
int x = in.intValue();
System.out.println(x);
//方式2
//public static int parseInt(String s)
int y = Integer.parseInt(s);
System.out.println(y);
}
案例需求:
- 有一个字符串:“91 27 46 38 50”,把其中的每一个数存到int类型的数组中
String str = "91 27 46 38 50";
//1.需要将字符串中的数字拿出来,使用split进行切割,先拿到字符串数组
String[] strArr = str.split(" ");
//2.创建一个int类型的数组
int[] numArr = new int[strArr.length];
//3.遍历字符串数组,拿出里面的字符串,然后进行类型转换
for (int i = 0; i < strArr.length; i++) {
//4.将String转换成int,使用parseInt。给int数组赋值
numArr[i] = Integer.parseInt(strArr[i]);
}
如有错误欢迎留言评论,及时更正。 5月27日 羽露风