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

相关推荐
学长毕设5 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
C^h5 小时前
c++ string
开发语言·c++
raindayinrain5 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的6 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao6 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
zzu123zsw6 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
学逆向的6 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的7 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”7 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
源码集结号7 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统