【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>

相关推荐
酷炫码神15 分钟前
MosMos 创意效果与能力边界展示
java
Wang's Blog21 分钟前
Java 接入Redis: 使用Jedis操作Redis
java·服务器·redis
事圆则缓25 分钟前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
shehuiyuelaiyuehao33 分钟前
算法50,分治归并,数组中的逆序对
java·算法
烽学长35 分钟前
(附源码)基于Springboot+vue的图书阅读分享系统的设计与实现
java·spring boot·后端
Ivanqhz40 分钟前
数据搬运是性能关键
java·服务器·网络·人工智能·深度学习
青山木1 小时前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
MayBaymax1 小时前
Spring AI Alibaba Graph 实战:客服工单智能处理
java·ai·ai编程
光依旧1 小时前
MCP实战手记系列(五):让工具返回一个能点的界面(文末附github源码链接)
java·spring ai·前端集成·mcp·mcp apps
APIshop1 小时前
淘宝选品接口实战:从召回、详情、佣金到转链的 Java 接入笔记
java