Java学习笔记11
1.Math类
1.1 概述
Math类所在的包为java.lang
包,因此在使用的时候不需要进行导包。并且Math类被final
修饰了,因此该类是不能被继承的。
Math类中包含了执行基本数学运算的方法,我们可以使用Math类完成基本的数学运算。
1.2 常用方法
方法 | 作用 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static double celi(double a) | 返回大于等于参数的最小整数(向上取整) |
public static double floor(double a) | 返回小于等于参数的最大整数(向下取整) |
public static int round(float a) | 按照四舍五入返回最接近参数的int类型的值 |
public static int max(int a, int b) | 返回两个参数中的较大值 |
public static int min(int a, int b) | 返回两个参数中的较小值 |
public static double pow(double a, double b) | 返回a的b次幂 |
public static double random() | 返回一个取值范围为[0.0, 1.0)的随机值 |
2.System类
2.1 概述
System类所在的包为java.lang
包,因此在使用的时候不需要进行导包。并且System类被final
修饰了,因此该类是不能被继承的。
System类包含了系统操作的一些常用方法。比如获取当前时间所对应的毫秒值、终止当前的JVM等等。
2.2 常用方法
方法 | 作用 |
---|---|
public static long currentTimeMillis() | 获取当前时间所对应的毫秒值(时间戳)。 |
public static void exit(int status) | 终止当前正在运行的Java虚拟机(JVM),参数:0表示正常退出,非0表示异常退出。 |
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 将指定源数组中的数组从指定位置复制到目标数组的指定位置。 |
注意:
时间戳中当前时间是世界标准时
arraycopy
参数解释:
// src: 源数组 // srcPos: 源数值的开始位置 // dest: 目标数组 // destPos: 目标数组开始位置 // length: 要复制的元素个数
3.Runtime类
3.1 概述
Runtime类所在包为java.lang
包,因此在使用的时候不需要进行导包。
Runtime表示Java中运行时的对象,可以获取到程序运行时涉及到的一些信息。
3.2 常用方法
方法 | 作用 |
---|---|
public static Runtime getRuntime() | 获取当前系统的运行环境对象 |
public void exit(int status) | 停止虚拟机 |
public int availableProcessors() | 获取CPU的线程数 |
public long maxMemory() | 获取JVM能从系统中获取的总内存(单位byte) |
public long totalMemory() | 获取JVM已经从系统中获取的总内存(单位byte) |
public long freeMemory() | 获取JVM剩余内存大小(单位byte) |
public Process exec(String command) | 运行cmd命令 |
注意:
Runtime类的构造方法被私有化了,只能使用
getRuntime()
来获取运行环境对象,这能保证获取的运行环境对象是同一个。Runtime类中的
exit
方法的底层实现:
public static void exit(int status) { Runtime.getRuntime().exit(status); }
exec
并不能执行所有的cmd命令
4.Object类
4.1 概述
Object类所在包为java.lang
包,因此在使用的时候不需要进行导包。Object是类层次结构的根,每个类都可以将Object类作为超类。所有类都直接或间接地继承该类。
一般情况下我们很少去主动地创建Object类的对象。更多的是创建Object类的某个子类对象,然后通过子类对象调用Object类中的方法。
4.2 常用方法
方法 | 作用 |
---|---|
public String toString() | 返回该对象的字符串表示形式 |
public boolean equals(Object obj) | 比较两个对象的地址值是否相等 |
protected native Object clone() | 对象克隆(浅克隆) |
4.3 对象克隆(对象拷贝)
浅克隆(浅拷贝)
不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝。
基本数据类型拷贝过来的是具体的数据,引用数据类型拷贝过来的是地址值。
注意:Object类默认的是浅拷贝
深克隆(深拷贝)
基本数据类型拷贝的是具体的数据,字符串复用串池里面的数据,引用数据类型会重新创建一个新的对象,并拷贝其中的值。
5.Objects类
5.1 概述
Objects类所在包为java.util
包,因此在使用的时候需要导包。并且System类被final
修饰了,因此该类是不能被继承的。
Objects类提供了一些对象常见操作的方法。Objects类中所提供的方法都是静态的,所以可以通过类名直接调用。
5.2 常用方法
方法 | 作用 |
---|---|
public static String toString(Object o) | 获取对象的字符串表现形式 |
public static boolean equals(Object a, Object b) | 比较两个对象是否相等 |
public static boolean isNull(Object obj) | 判断对象是否为null |
public static boolean nonNull(Object obj) | 判断对象是否不为null |
6.BigInteger类
6.1 概述
BigInteger类所在包为java.math
包,因此在使用的时候需要导包。BigInteger理论最大可以表示42亿的21亿次方,基本上在内存撑爆之前都无法达到这个上限,所以可以视为无穷大。
6.2 构造方法
方法 | 作用 |
---|---|
public BigInteger(int num, Random rnd) | 获取随机大整数,范围:[0, 2的num次方-1] |
public BigInteger(String val) | 获取指定大整数 |
public BigInteger(String val, int radix) | 获取指定进制的大整数 |
用静态方法获取一个大整数:
public static BigInteger valueOf(long val)
提示:
- 如果需要表示的数字没有超出long的范围,可以用静态方法获取BigInteger对象。
- 如果需要表示的数超出long的范围,只能通过构造方法获取BigInteger对象。
- BigInteger对象一旦创建,内部记录的值就不能发生改变。
- 静态方法对-16~16的数字有内部优化。
6.3 常见方法
方法 | 作用 |
---|---|
public BigInteger add(BigInteger val) | 两数相加 |
public BigInteger substract(BigInteger val) | 两数相减 |
public BigInteger multiply(BigInteger val) | 两数相乘 |
public BigInteger divide(BigInteger val) | 两数相除(只返回商) |
public BigInteger[] divideAndRemainder(BigInteger val) | 两数相除(返回商和余) |
public boolean equals(Object x) | 比较两个大整数是否相同 |
public BigInteger pow(int exponent) | 求次幂 |
public BigInteger max(BigInteger val) | 返回较大值 |
public BigInteger min(BigInteger val) | 返回较小值 |
public int intValue() | 转为int类型整数,超出范围报错 |
public long longValue() | 转为long类型整数,超出范围报错 |
6.4 底层存储方式
对于计算机而言,其实是没有数据类型的概念的,都是二进制,数据类型是编程语言自己规定的,所以在实际存储的时候,先把具体的数字变成二进制,每32个bit为一组,存储在数组中。
7.BigDecimal类
7.1 概述
BigDecimal类所在包为java.math
包,因此在使用的时候需要导包。我们可以使用BigDecimal类进行精准的数据计算。
7.2 构造方法
方法 | 作用 |
---|---|
public BigDecimal(int val) | 将int转换为BigDecimal |
public BigDecimal(long val) | 将long转换为BigDecimal |
public BigDecimal(String val) | 将String转换为BigDecimal |
7.3 常用方法
方法 | 作用 |
---|---|
public BigDecimal add(BigDecimal value) | 两数相加 |
public BigDecimal substract(BigDecimal value) | 两数相减 |
public BigDecimal multiply(BigDecimal value) | 两数相乘 |
public BigDecimal divide(BigDecimal value) | 两数相除 |
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) | 两数相除,保留scale位小数 |
提示:roundingMode一般使用
RoundingMode.HALF_UP
(四舍五入)。
7.4 底层存储方式
把数据转换为字符串,遍历得到里面的每一个字符,把这些字符转换为ASCII码表上对应的值,存储到byte数组中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?