【Java-Day16】API篇-Math类/System类/Object类/包装类

一.Math类

1.Math类是什么:

Math类是一个帮助我们用于进行**数学计算的工具类。**里面放了很多常用数学方法,比如取绝对值、向上取整、四舍五入、求最大值、生成随机数等。

2.特点:

Math 里的方法大多是 static 静态方法 ,所以不用创建对象,直接用类名调用。

3.工具类书写方式

工具类不是用来描述一类事物的,也没有main方法,而是帮我们做一些事情的类。

  1. 类名见名知意
  2. 私有化构造方法
  3. 方法定义为静态

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为例)

  1. 使用构造方法创建(new)
  2. 静态方法(使用valueof方法创建)
  3. 直接赋值(自动装箱)

(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 什么时候用包装类

  1. 集合中使用,比如 ArrayList<Integer>

  2. 字符串转数字,比如 Integer.parseInt()

  3. 需要表示 null 的时候,比如数据库中某个年龄为空

  4. 使用泛型时,比如 List<Double>

相关推荐
朦胧之8 小时前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅12 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪13 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly13 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨14 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜14 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing20 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户2986985301421 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
小bo波2 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
nanxun8863 天前
记一次诡异的 Docker 容器"串包"故障排查
java