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

相关推荐
Herbert_hwt15 分钟前
建立Java程序开发
java·开发语言
好好沉淀30 分钟前
@ExcelIgnoreUnannotated 和 @AutoMapper 详解
java
愚公移码1 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮1 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
驰骋工作流1 小时前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
dogstarhuang1 小时前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
VortMall2 小时前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
Echo缘2 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
吴声子夜歌2 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
Java面试题总结2 小时前
mybatis插件
java·tomcat·mybatis