一.Math类
1.Math类是什么:
Math类是一个帮助我们用于进行**数学计算的工具类。**里面放了很多常用数学方法,比如取绝对值、向上取整、四舍五入、求最大值、生成随机数等。
2.特点:
Math 里的方法大多是 static 静态方法 ,所以不用创建对象,直接用类名调用。
3.工具类书写方式:
工具类不是用来描述一类事物的,也没有main方法,而是帮我们做一些事情的类。
- 类名见名知意
- 私有化构造方法
- 方法定义为静态
4.使用Math:
java
int num = Math.abs(-10);
System.out.println(num); // 10
//不能这么写:Math m = new Math();
5.Math方法:
| 方法名 | 说明 |
|---|---|
| public static int abs(int a) | 获取参数绝对值 |
| public static double ceil(double a) | 向上取整 |
| public static doublefloor(double a) | 向下取整 |
| public static int round(float a) | 四舍五入(负数里,刚好是.5时,会舍去不进一) |
| public static int max(int a, int b) | 获取两个 int 值中的较大值 |
| public static double pow(double a, double b) | 返回 a 的 b 次幂的值 |
| public static doublerandom() | 返回值为 double 的随机值,范围 [0.0, 1.0) |
二.System类
System也是一个工具类,提供了一些与系统相关的方法。
计算机的时间原点:1970年1月1日0:0:0,我国在东八区,有8小时时差。
| 方法名 | 说明 |
|---|---|
| public static void exit(int status) | 终止当前运行的 Java 虚拟机 |
| public static long currentTimeMillis() | 返回当前系统的时间,毫秒值形式 |
| public static void arraycopy(数据源数组, 起始索引, 目的地数组, 起始索引, 拷贝个数) | 数组拷贝 |
三.Object类
Object
Object 是Java中的顶级父类,所有的类都直接或间接的继承于Object类
Object类中的方法可以被所有类访问。
| 方法名 | 说明 |
|---|---|
| public String toString() | 返回对象的字符串表示形式 |
| public boolean equals(Object obj) | 比较两个对象是否相等 |
toString():一般会重写, 重写目的是为了打印对象时打印属性
equals():比较对象时会重写 ,比较对象属性值是否相同
Objects是Java中操作对象的工具类。
四.包装类
4.1 什么是包装类:
包装类就是 Java 给 8 种基本数据类型准备的"对象版本"。
包装类就是基本数据类型的对象形式。
4.2 为什么需要包装类
因为 Java 里有些地方只能用对象,不能直接用基本类型。比如集合的泛型约束。
4.3 基本数据类型对应的包装类
| 基本类型 | 包装类 | 基本类型 | 包装类 |
|---|---|---|---|
| byte | Byte | float | Float |
| short | Short | double | Double |
| int | Integer | char | Character |
| long | Long | boolean | Boolean |
4.4 创建包装类对象的方式(以integer为例)
- 使用构造方法创建(new)
- 静态方法(使用valueof方法创建)
- 直接赋值(自动装箱)
(1)构造方法(不推荐)
每一次都会在内存中创建一个新的Integer的对象。
java
Integer i = new Integer(10);
(2)静态方法创建()
当Integer类被加载到内存中的时候,会提前创建-128127之间所有数据的对象,共计256个,放
到一个数组(Integer常量池)当中。
当我们利用 valueof方法 获取对象的时候,判断是否在这个范围当中
如果在,就不会创建新的对象,而是从数组当中获取
如果不在,此时就会利用构造方法的方式去创建对象
java
Integer i = Integer.valueOf(10);
Double d = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);
(3)自动装箱,直接赋值
是第二种的简写,底层相当于调用valueof
java
Integer i = 10;
等价于 Integer i = Integer.valueOf(10);
4.5 自动装箱/ 自动拆箱
Java 有基本类型 和包装类 ,二者需要互相转换,Java 5 开始提供自动装箱 / 拆箱,不用手动写代码转换。
自动装箱
JVM把基本数据类型 自动装到一个对象当中变成包装类对象 ,叫自动装箱。底层调用valueOf方法
java
//手写转换
int num = 10;
Integer obj = Integer.valueOf(num); // 手动转成包装对象
//自动装箱
int num = 10;
Integer obj = num; //编译器底层等价于上面 valueOf
自动拆箱
JVM把包装类对象 自动变成基本数据类型 ,叫自动拆箱。底层调用IntValue方法
java
Integer num = 10;
int a = num;
这里 num 是 Integer,a 是 int。Java 会自动把 Integer 拆成 int。
有了自动装箱和自动拆箱,我们可以认为Int和integer是相同的。
4.6 Integer类里的常见成员方法
- parseInt(字符串->整数)
- toXXXString(转二进制、八进制、十六进制)
| 方法名 | 说明 |
|---|---|
| public static IntegervalueOf(int i) | 把基本数据类型变成包装类(自动装箱) |
| public int intValue() | 把包装类变回基本数据类型 int(自动拆箱) |
| public static intparseInt(String s) | 把字符串形式 的整数变成int 类型 |
| public static StringtoBinaryString(int i) | 获取二进制 |
| public static StringtoOctalString(int i) | 获取八进制 |
| public static String toHexString(int i) | 获取十六进制 |
java
public static void main(String[] args) {
//1.把基本数据类型变成包装类
Integer a = Integer.valueOf("123");
System.out.println(a);
//2.把包装类变回基本数据类型Int
//把对象里面的属性值给获取出来
int num = a.intValue();
System.out.println(num);
//3.把字符串形式的整数变成int类型
String str = "123";
int num1 = Integer.parseInt(str);
}
4.7 常见字符串转换方法
| 方法 | 作用 |
|---|---|
| Integer.parseInt("123") | 字符串转 int |
| Long.parseLong("123") | 字符串转 long |
| Double.parseDouble("3.14") | 字符串转 double |
| Boolean.parseBoolean("true") | 字符串转 boolean |
java
int a = Integer.parseInt("100");
double b = Double.parseDouble("3.14");
boolean c = Boolean.parseBoolean("true");
4.8 什么时候用包装类
-
集合中使用,比如 ArrayList<Integer>
-
字符串转数字,比如 Integer.parseInt()
-
需要表示 null 的时候,比如数据库中某个年龄为空
-
使用泛型时,比如 List<Double>