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) 将指定源数组中的数组从指定位置复制到目标数组的指定位置。

注意:

  1. 时间戳中当前时间是世界标准时

  2. 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命令

注意:

  1. Runtime类的构造方法被私有化了,只能使用getRuntime()来获取运行环境对象,这能保证获取的运行环境对象是同一个。

  2. Runtime类中的exit方法的底层实现:

    public static void exit(int status) {
    	Runtime.getRuntime().exit(status);
    }
    
  3. 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)

提示:

  1. 如果需要表示的数字没有超出long的范围,可以用静态方法获取BigInteger对象。
  2. 如果需要表示的数超出long的范围,只能通过构造方法获取BigInteger对象。
  3. BigInteger对象一旦创建,内部记录的值就不能发生改变。
  4. 静态方法对-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数组中。

posted @   KuaiCode  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示