当前位置: 首页 > ai >正文

常见的 API 及相关知识总结

常见的 API 及相关知识总结

一、Math 类

Math 类提供了许多用于数学计算的静态方法和常量。

常见方法总结

方法描述
Math.abs()返回一个数的绝对值
Math.ceil()返回大于或等于给定数字的最小整数
Math.floor()返回小于或等于给定数字的最大整数
Math.round()对一个数进行四舍五入
Math.max()返回两个数中的最大值
Math.min()返回两个数中的最小值
Math.random()返回一个介于 0(包括)和 1(不包括)之间的随机小数

示例代码

public class MathExample {public static void main(String[] args) {int num = -10;System.out.println("绝对值: " + Math.abs(num)); System.out.println("向上取整: " + Math.ceil(3.2)); System.out.println("向下取整: " + Math.floor(3.8)); System.out.println("四舍五入: " + Math.round(3.5)); System.out.println("最大值: " + Math.max(10, 20)); System.out.println("最小值: " + Math.min(10, 20)); System.out.println("随机数: " + Math.random()); }
}

二、算法水题

1. 减少循环次数提高效率

在编写循环代码时,通过合理的条件判断和算法优化,可以减少不必要的循环次数,从而提高程序的执行效率。例如,在查找某个元素时,可以提前终止循环。

2. 自幂数

自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个自幂数,因为 (1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153)。

示例代码
public class NarcissisticNumber {public static void main(String[] args) {for (int i = 100; i < 1000; i++) {int num = i;int sum = 0;while (num > 0) {int digit = num % 10;sum += Math.pow(digit, 3);num /= 10;}if (sum == i) {System.out.println(i + " 是自幂数");}}}
}

三、System 类

1. 时间相关

System.currentTimeMillis() 方法可以返回当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位),常用于计算程序的执行时间。

2. 常见方法

退出程序

System.exit(int status) 方法用于终止当前正在运行的 Java 虚拟机。参数 status 为 0 表示正常退出,非 0 表示异常退出。

获取运行时间

通过记录程序开始和结束时的时间戳,然后计算差值,可以得到程序的运行时间。

拷贝数组

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 方法用于将一个数组的指定部分复制到另一个数组中。

示例代码

public class SystemExample {public static void main(String[] args) {// 获取当前时间戳long startTime = System.currentTimeMillis();// 数组拷贝示例int[] srcArray = {1, 2, 3, 4, 5};int[] destArray = new int[5];System.arraycopy(srcArray, 0, destArray, 0, 5);// 打印拷贝后的数组for (int num : destArray) {System.out.print(num + " ");}System.out.println();// 获取结束时间戳long endTime = System.currentTimeMillis();System.out.println("程序运行时间: " + (endTime - startTime) + " 毫秒");// 退出程序System.exit(0);}
}

四、Runtime 类

Runtime 类表示 Java 虚拟机的运行时环境,每个 Java 应用程序都有一个 Runtime 类实例,应用程序可以通过 Runtime.getRuntime() 方法获取该实例。常见的方法有 exec() 用于执行外部命令,freeMemory() 用于返回 Java 虚拟机中的空闲内存量等。

示例代码

import java.io.IOException;public class RuntimeExample {public static void main(String[] args) {Runtime runtime = Runtime.getRuntime();try {// 执行外部命令Process process = runtime.exec("notepad.exe");} catch (IOException e) {e.printStackTrace();}// 获取空闲内存量long freeMemory = runtime.freeMemory();System.out.println("空闲内存量: " + freeMemory + " 字节");}
}

五、Object 类

1. 构造方法

Object()Object 类的默认构造方法,所有类都直接或间接继承自 Object 类,因此所有类都可以使用这个构造方法。

2. 常见成员方法

toString()

toString() 方法返回该对象的字符串表示形式,默认情况下返回的是对象的类名和哈希码的十六进制表示。通常建议重写该方法,以便返回更有意义的信息。

equals()

equals() 方法用于比较两个对象是否相等,默认情况下比较的是两个对象的引用是否相等。通常需要重写该方法,以便根据对象的属性进行比较。

clone()

clone() 方法用于创建并返回该对象的一个副本。要使用该方法,类必须实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常。克隆分为浅克隆和深克隆:

  • 浅克隆:只复制对象的基本数据类型和引用类型的引用,而不复制引用类型所指向的对象。
  • 深克隆:不仅复制对象的基本数据类型,还复制引用类型所指向的对象。

示例代码

class Person implements Cloneable {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}@Overridepublic boolean equals(Object obj) {if (this == obj) return true;if (obj == null || getClass() != obj.getClass()) return false;Person person = (Person) obj;return age == person.age && name.equals(person.name);}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}public class ObjectExample {public static void main(String[] args) throws CloneNotSupportedException {Person person1 = new Person("Alice", 20);Person person2 = (Person) person1.clone();System.out.println(person1.toString());System.out.println(person1.equals(person2));}
}

六、Objects 类

Objects 类提供了一些静态实用方法,用于操作对象或在操作前检查某些条件。常见的方法有 isNull() 用于判断对象是否为 nullnonNull() 用于判断对象是否不为 nullequals() 用于比较两个对象是否相等(可以处理 null 情况)等。

示例代码

import java.util.Objects;public class ObjectsExample {public static void main(String[] args) {String str1 = "hello";String str2 = null;System.out.println(Objects.isNull(str1)); System.out.println(Objects.isNull(str2)); System.out.println(Objects.nonNull(str1)); System.out.println(Objects.nonNull(str2)); System.out.println(Objects.equals(str1, str2)); }
}

七、BigInteger 类

BigInteger 类用于处理任意大的整数,它可以表示的整数范围没有上限。

1. 构造方法

可以通过字符串、整数等方式创建 BigInteger 对象。

2. 常见方法

add() 用于加法运算,subtract() 用于减法运算,multiply() 用于乘法运算,divide() 用于除法运算等。

示例代码

import java.math.BigInteger;public class BigIntegerExample {public static void main(String[] args) {BigInteger num1 = new BigInteger("12345678901234567890");BigInteger num2 = new BigInteger("98765432109876543210");BigInteger sum = num1.add(num2);BigInteger difference = num1.subtract(num2);BigInteger product = num1.multiply(num2);BigInteger quotient = num1.divide(num2);System.out.println("和: " + sum);System.out.println("差: " + difference);System.out.println("积: " + product);System.out.println("商: " + quotient);}
}

八、BigDecimal 类

BigDecimal 类用于处理任意精度的十进制数,常用于金融计算等对精度要求较高的场景。

1. 常见成员方法

add() 用于加法运算,subtract() 用于减法运算,multiply() 用于乘法运算,divide() 用于除法运算(需要指定舍入模式)等。

示例代码

import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalExample {public static void main(String[] args) {BigDecimal num1 = new BigDecimal("10.25");BigDecimal num2 = new BigDecimal("3.75");BigDecimal sum = num1.add(num2);BigDecimal difference = num1.subtract(num2);BigDecimal product = num1.multiply(num2);BigDecimal quotient = num1.divide(num2, 2, RoundingMode.HALF_UP);System.out.println("和: " + sum);System.out.println("差: " + difference);System.out.println("积: " + product);System.out.println("商: " + quotient);}
}

九、正则表达式(regex)

1. 作用

正则表达式用于字符串的匹配、查找、替换和分割等操作。

2. 书写规则

  • 字符类:[abc] 表示匹配 abc 中的任意一个字符。
  • 预定义字符类:\d 表示匹配数字字符,\w 表示匹配单词字符(字母、数字、下划线)等。
  • 数量词:* 表示匹配前面的元素零次或多次,+ 表示匹配前面的元素一次或多次,? 表示匹配前面的元素零次或一次等。

3. 忽略大小写

在正则表达式前面加上 (?i) 可以忽略大小写。

示例代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexExample {public static void main(String[] args) {String input = "Hello, World!";String regex = "(?i)hello";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);if (matcher.find()) {System.out.println("匹配成功");} else {System.out.println("匹配失败");}}
}

十、爬虫

1. 本地爬虫

本地爬虫用于在本地文件中查找和提取所需的数据,通常使用正则表达式进行匹配。

2. 网络爬虫

网络爬虫用于从互联网上获取数据,需要使用网络编程相关的知识,如 URLHttpURLConnection 等。

3. 带条件的爬虫

使用正则表达式的占位符(如 (?=)(?:)(?!))可以实现带条件的匹配。

4. 贪婪爬取和非贪婪爬取

  • 贪婪爬取:尽可能多地匹配字符。
  • 非贪婪爬取:尽可能少地匹配字符,在数量词后面加上 ? 可以实现非贪婪爬取。

示例代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class WebCrawlerExample {public static void main(String[] args) {try {URL url = new URL("https://www.example.com");BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));StringBuilder content = new StringBuilder();String line;while ((line = reader.readLine()) != null) {content.append(line);}reader.close();String regex = "<a href=\"(.*?)\">";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(content.toString());while (matcher.find()) {System.out.println(matcher.group(1));}} catch (IOException e) {e.printStackTrace();}}
}

十一、分组

1. 捕获分组

使用括号 () 可以创建捕获分组,通过 \组号 可以引用前面的分组内容,通过 $组号 可以在替换操作中引用分组内容。

2. 非捕获分组

使用 (?:) 可以创建非捕获分组,非捕获分组不会被捕获,也不会分配组号。

示例代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class GroupExample {public static void main(String[] args) {String input = "abcabc";String regex = "(abc)\\1";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);if (matcher.find()) {System.out.println("匹配成功");} else {System.out.println("匹配失败");}}
}

十二、JDK7 前时间相关类

1. Date 类

Date 类表示特定的瞬间,精确到毫秒。可以使用无参构造方法创建当前时间的 Date 对象,也可以使用带参构造方法指定时间。

2. SimpleDateFormat 类

SimpleDateFormat 类用于格式化和解析日期。可以通过指定日期格式字符串来创建 SimpleDateFormat 对象,然后使用 format() 方法将 Date 对象格式化为字符串,使用 parse() 方法将字符串解析为 Date 对象。

3. Calendar 类

Calendar 类是一个抽象类,用于表示日历信息。可以通过 Calendar.getInstance() 方法获取 Calendar 对象,然后使用 get() 方法获取日历字段的值,使用 set() 方法设置日历字段的值。

示例代码

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class OldTimeExample {public static void main(String[] args) throws ParseException {// Date类示例Date date = new Date();System.out.println("当前时间: " + date);// SimpleDateFormat类示例SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(date);System.out.println("格式化后的时间: " + formattedDate);String dateStr = "2024-12-01 12:00:00";Date parsedDate = sdf.parse(dateStr);System.out.println("解析后的时间: " + parsedDate);// Calendar类示例Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, 2024);calendar.set(Calendar.MONTH, Calendar.DECEMBER);calendar.set(Calendar.DAY_OF_MONTH, 1);Date calendarDate = calendar.getTime();System.out.println("Calendar设置的时间: " + calendarDate);}
}

十三、JDK8 新增时间相关类

1. 优点

JDK8 新增的时间相关类更加简洁明了、安全,提供了更好的日期和时间处理功能。

2. 常用类

  • ZonedDateTime:带时区的日期时间。
  • Instant:时间戳。
  • DateTimeFormatter:用于日期时间的格式化和解析。
  • LocalDate:表示日期。
  • LocalTime:表示时间。
  • LocalDateTime:表示日期和时间。
  • Duration:用于计算两个时间点之间的间隔。
  • Period:用于计算两个日期之间的间隔。
  • ChronoUnit:用于计算日期和时间之间的间隔。

示例代码

import java.time.*;
import java.time.format.DateTimeFormatter;public class NewTimeExample {public static void main(String[] args) {// ZonedDateTime示例ZonedDateTime zonedDateTime = ZonedDateTime.now();System.out.println("带时区的日期时间: " + zonedDateTime);// Instant示例Instant instant = Instant.now();System.out.println("时间戳: " + instant);// DateTimeFormatter示例DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime localDateTime = LocalDateTime.now();String formattedDateTime = localDateTime.format(formatter);System.out.println("格式化后的日期时间: " + formattedDateTime);// LocalDate示例LocalDate localDate = LocalDate.now();System.out.println("当前日期: " + localDate);// LocalTime示例LocalTime localTime = LocalTime.now();System.out.println("当前时间: " + localTime);// Duration示例LocalTime startTime = LocalTime.of(9, 0);LocalTime endTime = LocalTime.of(10, 30);Duration duration = Duration.between(startTime, endTime);System.out.println("时间间隔: " + duration.toMinutes() + " 分钟");// Period示例LocalDate startDate = LocalDate.of(2024, 1, 1);LocalDate endDate = LocalDate.of(2024, 12, 31);Period period = Period.between(startDate, endDate);System.out.println("日期间隔: " + period.getMonths() + " 个月 " + period.getDays() + " 天");// ChronoUnit示例long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);System.out.println("日期间隔(天): " + daysBetween);}
}

十四、包装类

1. 概念

包装类是将基本数据类型封装成对象的类,例如 Integer 对应 intDouble 对应 double 等。

2. 自动拆箱和自动装箱机制

  • 自动装箱:将基本数据类型自动转换为包装类对象。
  • 自动拆箱:将包装类对象自动转换为基本数据类型。

3. 字符串转换为基本数据类型

可以使用包装类的静态方法(如 Integer.parseInt()Double.parseDouble() 等)将字符串转换为对应的基本数据类型。

示例代码

public class WrapperClassExample {public static void main(String[] args) {// 自动装箱Integer num1 = 10; // 自动拆箱int num2 = num1; // 字符串转换为基本数据类型String str = "20";int num3 = Integer.parseInt(str);System.out.println(num1);System.out.println(num2);System.out.println(num3);}
}

十五、综合练习

在实际开发中,经常需要综合运用上述知识来解决各种问题。例如,在处理数据时可能需要使用正则表达式进行数据验证,使用 BigDecimal 进行精确计算,使用时间相关类进行日期和时间的处理等。通过不断的练习和实践,可以更好地掌握这些知识。

以上就是常见的 API 及相关知识的总结,希望对大家有所帮助。在学习过程中,要不断实践,加深对这些知识的理解和掌握。同时,要注意代码的规范性和可读性,提高编程能力。

http://www.xdnf.cn/news/7633.html

相关文章:

  • 如何查看Python内置函数列表
  • 面试之MySQL慢查询优化干货分享
  • AT2659S低噪声放大器芯片:1.4-3.6V宽电压供电,集成50Ω匹配
  • springboot+vue实现服装商城系统(带用户协同过滤个性化推荐算法)
  • 使用SFunction获取属性名,减少嵌入硬编码
  • 初识Linux 进程:进程创建、终止与进程地址空间
  • js绑定事件
  • RabbitMQ ⑤-顺序性保障 || 消息积压 || 幂等性
  • 在CuPy中使用多节点多GPU环境
  • C#基础:yield return关键字的特点
  • 2025ICPC武汉邀请赛-F
  • 游戏启动DLL文件缺失怎么解决 解决dll问题的方法
  • Vue学习路线
  • leetcode hot100刷题日记——6.和为 K 的子数组
  • 【Axure视频教程】动态地图路线
  • 实现rpc通信机制(待定)
  • R语言空间分析实战:地理加权回归联合主成份与判别分析破解空间异质性难题
  • 封装POD与PinMap文件总结学习-20250516
  • Go 语言简介
  • 操作系统的基础概念
  • 初步认识HarmonyOS NEXT端云一体化开发
  • AbMole| Phorbol 12-myristate 13-acetate(CAS号16561-29-8;目录号M4647)
  • vue+threeJs 生成烟花效果
  • PEFT简介及微调大模型DeepSeek-R1-Distill-Qwen-1.5B
  • 【css知识】flex-grow: 1
  • LibreHardwareMonitor:.Net开发的开源硬件监控项目
  • 中国机加工的市场概况及冷镦技术对于机加工替代的趋势
  • 如何在 Windows 11/10 PC 上擦除外部硬盘驱动
  • 什么叫生成式人工智能?职业技能的范式转移与能力重构
  • HarmonyOS5云服务技术分享--云存储SDK文章整理