API的学习总结(上)

发布于:2025-05-14 ⋅ 阅读:(3) ⋅ 点赞:(0)

       在 Java 中,API 指的是 Java 提供的一系列类、接口、方法和工具,用于开发 Java 应用程序。Java API 是 Java 平台的核心组成部分,它提供了丰富的功能,包括基础数据类型、集合框架、输入输出、网络编程、多线程、数据库连接等。

核心API包

1. java.lang:提供 Java 语言的基础类,如 Object、String、Integer、Thread 等。所有其他包都隐式导入了这个包。

2. java.util:包含集合框架(如 List、Set、Map)、日期时间处理、随机数生成、事件模型等工具类。

3. java.io:提供输入输出功能,用于文件操作、网络数据流等。

4. java.net:支持网络编程,包含 URL、Socket、ServerSocket 等类。

5. java.sql:提供数据库访问功能,用于连接和操作数据库。

6. java.text:包含格式化和解析数据的类,如 DateFormat、NumberFormat 等。

7. java.time(Java 8+):现代日期和时间 API,替代了旧的 java.util.Date 和 Calendar 类。

8. java.math:提供高精度计算(BigInteger、BigDecimal)和数学运算工具。


Math

在 Java 中,java.lang.Math类提供了执行基本数学运算的方法,如指数、对数、平方根和三角函数等。这个类包含了许多静态方法和常量,可以直接通过类名调用,无需创建对象。

(私有化构造方法,所以的方法都是静态的)

Math类的常用方法:

1. 常用数学常量

  • Math.PI圆周率 π(约 3.14159)。
  • Math.E自然对数的底数 e(约 2.71828)。

e.g.

System.out.println("π的值:" + Math.PI); // 输出:3.141592653589793
System.out.println("e的值:" + Math.E); // 输出:2.718281828459045

2. 基本算术运算

绝对值
  • Math.abs(x)返回 x 的绝对值。

示例

java

System.out.println(Math.abs(-5)); // 输出:5
System.out.println(Math.abs(3.14)); // 输出:3.14
最大值和最小值
  • Math.max(x, y)返回 x 和 y 中的较大值。
  • Math.min(x, y)返回 x 和 y 中的较小值。

e.g.

System.out.println(Math.max(10, 20)); // 输出:20
System.out.println(Math.min(-3, -5)); // 输出:-5
四舍五入
  • Math.round(x)返回最接近 x 的整数(longint类型)。
  • Math.ceil(x)返回大于或等于 x 的最小整数(double类型)。
  • Math.floor(x)返回小于或等于 x 的最大整数(double类型)。

e.g.

System.out.println(Math.round(3.5)); // 输出:4
System.out.println(Math.ceil(3.2)); // 输出:4.0
System.out.println(Math.floor(3.8)); // 输出:3.0

3. 幂运算与对数运算

  • Math.pow(x, y)返回 x 的 y 次幂(double类型)。
  • Math.sqrt(x)返回 x 的平方根(double类型)。
  • Math.cbrt(x)返回 x 的立方根(double类型)。
  • Math.log(x)返回 x 的自然对数(底数为 e)。
  • Math.log10(x)返回 x 的常用对数(底数为 10)。

e.g.

System.out.println(Math.pow(2, 3)); // 输出:8.0
System.out.println(Math.sqrt(16)); // 输出:4.0
System.out.println(Math.log(Math.E)); // 输出:1.0

4. 三角函数与角度转换

  • Math.sin(rad):返回弧度 rad 的正弦值。
  • Math.cos(rad):返回弧度 rad 的余弦值。
  • Math.tan(rad):返回弧度 rad 的正切值。
  • Math.toRadians(deg):将角度转换为弧度。
  • Math.toDegrees(rad):将弧度转换为角度。
  • e.g.
double rad = Math.toRadians(90); // 90度转弧度
System.out.println(Math.sin(rad)); // 输出:1.0(近似值)

5. 随机数生成

  • Math.random():返回一个大于等于 0 且小于 1 的随机double值。范围[0.0,1.0]

e.g.:生成 1 到 10 之间的随机整数:

int randomNum = (int) (Math.random() * 10) + 1;
System.out.println(randomNum); // 输出1~10之间的随机整数

完整示例代码

以下是一个使用 Math 类各种方法的完整示例:

public class MathExample {
    public static void main(String[] args) {
        // 常量
        System.out.println("π = " + Math.PI);
        System.out.println("e = " + Math.E);

        // 基本运算
        System.out.println("|-7| = " + Math.abs(-7));
        System.out.println("max(5, 9) = " + Math.max(5, 9));
        System.out.println("min(3.2, 4.5) = " + Math.min(3.2, 4.5));

        // 四舍五入
        System.out.println("round(3.7) = " + Math.round(3.7));
        System.out.println("ceil(3.2) = " + Math.ceil(3.2));
        System.out.println("floor(3.8) = " + Math.floor(3.8));

        // 幂运算与对数
        System.out.println("2^3 = " + Math.pow(2, 3));
        System.out.println("√25 = " + Math.sqrt(25));
        System.out.println("log(e) = " + Math.log(Math.E));

        // 三角函数
        double angle = 45;
        double radian = Math.toRadians(angle);
        System.out.println("sin(45°) = " + Math.sin(radian));
        System.out.println("cos(45°) = " + Math.cos(radian));

        // 随机数
        System.out.println("随机数(0~1): " + Math.random());
        System.out.println("随机整数(1~100): " + ((int) (Math.random() * 100) + 1));
    }
}


System

System也是一个工具类,提供了一些与系统相关的方法。

方法名 说明
public static void exit(int status) 终止当前运行的Java的虚拟机
public static long currentTimeMills()

返回当前系统的时间毫秒值形式

public static void arratcopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 数组拷贝

 public static void exit(int status)

  • 参数status是一个整数状态码,用于表示程序的退出状态。
    • 0:表示程序正常退出(通常用于成功执行的情况)。
    • 非零值(如 1、-1):表示程序异常退出(通常用于发生错误的情况)。

常见应用场景

(1)程序正常结束
public class Chillingheart {
    public static void main(String[] args) {
        // 执行某些操作...
        System.out.println("程序执行完毕,正常退出");
        System.exit(0); // 显式退出,状态码0表示成功
    }
}

(2)处理严重错误
public class Chillingheart {
    public static void main(String[] args) {
        try {
            // 尝试打开一个不存在的文件
            java.io.FileInputStream file = new java.io.FileInputStream("nonexistent.txt");
        } catch (java.io.FileNotFoundException e) {
            System.err.println("错误:文件未找到!");
            System.exit(1); // 状态码1表示文件操作失败
        }
    }
}

public static long currentTimeMills() 返回当前系统的时间毫秒值形式

常见应用场景

(1)计算代码执行时间
long startTime = System.currentTimeMillis();

// 执行需要计时的代码
for (int i = 0; i < 1000000; i++) {
    // 模拟耗时操作
}

long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
System.out.println("代码执行时间:" + elapsedTime + " 毫秒");

public static void arratcopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)  数组拷贝

//拷贝数组
int [] arr1 = {1,2,3,4,5,6,7,8,9,10};

int [] arr2 = new int [10];
//把arr1数组中的数据拷贝到arr2中
//arratcopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
System.arraycopy(arr1,0,arr2,0,10);

//验证
for(int i=0;i<arr2.length;i++){

   System.out.print(arr2[i]+" ");

}

Runtime

Runtime表示当前虚拟机的运行环境

java.lang.Runtime 类提供了与当前 Java 虚拟机(JVM)运行时环境交互的功能。每个 Java 应用程序都有一个与之关联的Runtime实例,通过它可以访问和控制 JVM 的某些特性,如内存管理、进程执行、系统资源等。

方法名 说明
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 实例

Runtime类采用单例模式,只能通过静态方法getRuntime()获取其实例:

Runtime runtime = Runtime.getRuntime();

2. 核心功能与方法

(1)内存管理
  • 获取内存信息
    long totalMemory = runtime.totalMemory(); // JVM当前总内存(字节)
    long freeMemory = runtime.freeMemory();   // JVM当前空闲内存(字节)
    long maxMemory = runtime.maxMemory();     // JVM最大可用内存(字节)
    
    System.out.printf("总内存: %.2f MB%n", totalMemory / 1024.0 / 1024);
    System.out.printf("空闲内存: %.2f MB%n", freeMemory / 1024.0 / 1024);
    System.out.printf("最大内存: %.2f MB%n", maxMemory / 1024.0 / 1024);
    

    建议垃圾回收

runtime.gc(); // 提示JVM执行垃圾回收(不一定立即执行)

Object

1. Object是 Java 中的顶级父类,所有的类直接或间接继承于Object类。

class MyClass {} // 隐式继承自Object
// 等价于
class MyClass extends Object {}

2. Object 类中的方法可以被所以子类访问,所以我们要学习Object类和其中的方法。

Object构造方法

方法名 说明
public Object () 空参构造
public class Object {
    // 默认构造方法(隐式存在,无需显式定义)
    Object() {}
}

注意:顶级父类中只有无参构造方法!!!

Object成员方法

方法名 说明
public String toString ( ) 返回对象的字符串表示形式
public boolean equals (Object obj) 比较两个对象是否相等
public Object clone (int a)

对象克隆(默认浅克隆)

如果需要深克隆需要重写方法或者使用第三方工具类

toString()

  • 功能:返回对象的字符串表示。
  • 默认格式类名@16进制哈希码(如Point@123456)。
  • 重写建议:提供更有意义的信息。

e.g.

@Override
public String toString() {
    return "Point{x=" + x + ", y=" + y + "}";
}

 equals (Object obj)

 在 Java 中,Object类的equals()方法是用于比较两个对象是否相等的核心方法。

String a = new String("hello");
String b = new String("hello");
System.out.println(a == b);      // false(引用不同)
System.out.println(a.equals(b)); // true(String类重写了equals())


String s = "abc";
StringBuilder sb = new StringBuilder("abc");

System.out.println(s.equals(sb));// false
        //因为equals方法是被s调用的,而s是字符串
        //所以equals要看string类中的
        //字符串中的equals方法,先判断参数是否为字符串
        // 如果是字符串,再比较内部的属性
        //但是如果参数不是字符串,直接返回false

 System.out.println(sb.equals(s));// false
        //因为equals方法是被sb调用的,而sb是StringBuilder
        //所以这里的equals方法要看StringBuilder中的equals方法
        //那么在StringBuilder当中,没有重写equals方法
        //使用的是Object中的
        //在Object当中默认是使用==号比较两个对象的地址值
        //而这里的s和sb记录的地址值是不一样的,所以结果返回false

注意:

equals()==的区别

  • ==:比较对象引用(内存地址)。
  • equals():比较对象内容(需重写)。

对象克隆

把A对象的属性值完全拷贝给B对象,也叫对象拷贝、对象赋值。

基本数据类型:存储的是真实的值

引用数据类型:存储的是另一个空间的地址值

克隆

不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来

基本数据类型拷贝过来;

字符串复用;

引用数据类型会重新创建的

 int[] data = this.data;
        //创建新的数组
        int[] newData =new int[data.length];
        //拷贝数组中的数据
        for (int i = 0; i < data.length; i++) {
            newData[i] = data[i];
        }
        //调用父类中的方法克隆对象
            User u=(User)super.clone();
        //因为父类中的克隆方法是浅克隆,替换克隆出来对象中的数组地址值
        u.data =newData;
        return u;

Objects

 成员方法

方法名 说明
public static boolean equals (Object a,Object b) 先做非空判断,比较两个对象
public static boolean isNull(Object obj) 判断对象是否为null,为null返回true,反之
public static boolean nonNull (Object obj) 判断对象是否为null,跟isNull的结果相反
String a = null;
String b = null;
System.out.println(Objects.equals(a, b)); // true

String c = "hello";
String d = "hello";
System.out.println(Objects.equals(c, d)); // true
String str = null;
Objects.requireNonNull(str); // 抛出NullPointerException
String str = "hello";
System.out.println(Objects.nonNull(str)); // true

今天就先到这啦!