3 常用类
3.1 Arrays
Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。
方法 | 描述 |
---|---|
List asList(T… a) | 返回由指定数组构造的 List |
void sort(Object[] a) | 对数组进行排序 |
void fill(Object[] a, Object val) | 为数组的所有元素都赋上相同的值 |
boolean equals(Object[] a, Object[] a2) | 检查两个数组是否相等 |
int binarySearch(Object[] a, Object key) | 对排序后的数组使用二分法查找数据 |
import java.util.Arrays;
import java.util.Random;
public class ArraysDemo {
public static void main(String[] args) {
int[] arr = new int[10];
// 填充数组
Arrays.fill(arr, 9);
System.out.println("fill:" + Arrays.toString(arr));
// 随机赋值
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
System.out.println("随机赋值:" + Arrays.toString(arr));
// 将索引5的值改为50
arr[5] = 50;
// 排序
Arrays.sort(arr);
System.out.println("排序:" + Arrays.toString(arr));
// 二分查找值为50的索引
int index = Arrays.binarySearch(arr, 50);
System.out.println("值为50的索引:" + index);
// 赋值
int[] newArr = Arrays.copyOf(arr, arr.length);
System.out.println("equals: " + Arrays.equals(arr, newArr));
}
}
!java ArraysDemo.java
fill:[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
随机赋值:[38, 30, 29, 40, 68, 68, 62, 16, 26, 2]
排序:[2, 16, 26, 29, 30, 38, 40, 50, 62, 68]
值为50的索引:7
equals: true
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
int[] arr = {6, 17, 92, 32, 58, 22, 84, 66, 36, 33};
Arrays.sort(arr);
System.out.println("排序后数组:" + Arrays.toString(arr));
int index = Arrays.binarySearch(arr, 33);
System.out.println("值33所在的索引:" + index);
}
}
!java ArraysTest.java
排序后数组:[6, 17, 22, 32, 33, 36, 58, 66, 84, 92]
值33所在的索引:4
3.2 StringBuilder
StringBuilder 类用于创建可变的字符串对象,可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的)。
StringBuilder 的构造方法:
方法 | 描述 |
---|---|
StringBuilder() | 构造一个其中不带字符的 StringBuilder,其初始容量为 16 个字符 |
StringBuilder(CharSequence seq) | 构造一个 StringBuilder,它包含与指定的 CharSequence 相同的字符 |
StringBuilder(int capacity) | 将指定的字符数组追加到此序列 |
StringBuilder(String str) | 将指定的子数组追加到此序列 |
StringBuilder 的常用方法:
方法 | 返回值 | 功能描述 |
---|---|---|
insert(int offsetm,Object obj) | StringBuilder | 在 offsetm 的位置插入字符串 obj |
append(Object obj) | StringBuilder | 在字符串末尾追加字符串 obj |
length() | int | 确定 StringBuilder 对象的长度 |
setCharAt(int index,char ch) | void | 使用 ch 指定的新值设置 index 指定的位置上的字符 |
toString() | String | 转换为字符串形式 |
reverse() | StringBuilder | 反转字符串 |
delete(int start, int end) | StringBuilder | 删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列 |
replace(int start, int end, String str) | StringBuilder | 使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束 |
public class StringBuilderTest {
public static void main(String[] args) {
// 定义和初始化 StringBuilder 对象
StringBuilder sb = new StringBuilder("I");
// sb后面加上" java"
sb.append(" java");
// 在sb[1]位置插入" love"
sb.insert(1, " love");
String str = sb.toString();
System.out.println(str);
}
}
!java StringBuilderTest.java
I love java
3.3 Date
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。
类 Date 中定义的未过时的构造方法:
方法 | 描述 |
---|---|
Date() | 构造一个 Date 对象并对其进行初始化以反映当前时间 |
Date(long date) | 构造一个 Date 对象,该对象表示从 1970 年 1 月 1 日 00:00:00 GMT 开始的指定毫秒数 |
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
String strDate, strTime;
Date objDate = new Date();
System.out.println("今天日期:" + objDate);
long time = objDate.getTime();
System.out.println("自1970年1月1日0点0分0秒起至现在的毫秒数:" + time);
strDate = objDate.toString();
// 提取 GMT 时间
strTime = strDate.substring(11, (strDate.length() - 4));
// 按小时、分钟、秒提取时间
strTime = "时间:" + strTime.substring(0, 8);
System.out.println(strTime);
// 格式化时间
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(objDate));
}
}
!java DateDemo.java
今天日期:Fri May 10 21:50:23 CST 2024
自1970年1月1日0点0分0秒起至现在的毫秒数:1715349023156
GMT 时间:21:50:23 CST
时间:21:50:23
2024-05-10 21:50:23
3.4 Calendar
Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。
GregorianCalendar 类的构造函数:
方法 | 描述 |
---|---|
GregorianCalendar() | 创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间 |
GregorianCalendar(TimeZone zone) | 创建的对象中的相关值被设置成指定时区 zone,缺省地点的当前时间 |
GregorianCalendar(Locale aLocale) | 创建的对象中的相关值被设置成缺省时区,指定地点 aLocale 的当前时间 |
GregorianCalendar(TimeZone zone,Locale aLocale) | 创建的对象中的相关值被设置成指定时区,指定地点的当前时间 |
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo {
public static void main(String[] args) {
System.out.println("完整显示日期时间:");
// 字符串转换日期格式
DateFormat fdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = fdate.format(new Date());
System.out.println(str);
// 创建 Calendar 对象
Calendar calendar = Calendar.getInstance();
// 初始化 Calendar 对象,但并不必要,除非需要重置时间
calendar.setTime(new Date());
// 显示年份
System.out.println("年份:" + calendar.get(Calendar.YEAR));
// 显示月份(从0开始,实际月份加1)
System.out.println("月份:" + (calendar.get(Calendar.MONTH) + 1));
// 显示日期
System.out.println("日期:" + calendar.get(Calendar.DATE));
// 显示小时
System.out.println("小时:" + calendar.get(Calendar.HOUR));
// 显示分钟
System.out.println("分钟:" + calendar.get(Calendar.MINUTE));
// 显示秒
System.out.println("秒:" + calendar.get(Calendar.SECOND));
// 今年的第 N 天
System.out.println("今年第" + calendar.get(Calendar.DAY_OF_YEAR) + "天");
// 本月第 N 天
System.out.println("本月第" + calendar.get(Calendar.DAY_OF_MONTH) + "天");
// 星期几(从 1 开始,1 表示星期天)
System.out.println("星期:" + calendar.get(Calendar.DAY_OF_WEEK));
// 3 小时以后
calendar.add(Calendar.HOUR_OF_DAY, 3);
System.out.println("3 小时以后:" + fdate.format(calendar.getTime()));
// 格式化显示
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
System.out.println(str);
// 重置时间
calendar.setTime(new Date());
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
System.out.println(str);
// 创建一个 Calendar 对象
Calendar calendarNew = Calendar.getInstance();
// 设定为5小时以后,后者大,显示-1
calendarNew.add(Calendar.HOUR, -5);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// 设定7小时以前,前者大,显示1
calendarNew.add(Calendar.HOUR, 7);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// 退回2小时,时间相同,显示0
calendarNew.add(Calendar.HOUR, -2);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// calendar 创建时间点
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()));
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
}
}
!java CalendarDemo.java
完整显示日期时间:
2024-05-10 23:03:23
年份:2024
月份:5
日期:10
小时:11
分钟:3
秒:23
今年第131天
本月第10天
星期:6
3 小时以后:2024-05-11 02:03:23
2024-05-11 02:03:23:918
2024-05-10 23:03:23:922
时间比较:-1
时间比较:1
时间比较:1
2024-05-10 23:03:23:922
时间比较:1
3.5 Math
Math 类提供了一些静态方法,用于执行基本数学运算。
Math 类的方法:
方法 | 返回值 | 描述 |
---|---|---|
sin(double numvalue) | double | 计算角 numvalue 的正弦值 |
cos(double numvalue) | double | 计算角 numvalue 的余弦值 |
acos(double numvalue) | double | 计算 numvalue 的反余弦 |
asin(double numvalue) | double | 计算 numvalue 的反正弦 |
atan(double numvalue) | double | 计算 numvalue 的反正切 |
pow(double a, double b) | double | 计算 a 的 b 次方 |
sqrt(double numvalue) | double | 计算给定值的正平方根 |
abs(int numvalue) | int | 计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数 |
ceil(double numvalue) | double | 返回大于等于 numvalue 的最小整数值 |
floor(double numvalue) | double | 返回小于等于 numvalue 的最大整数值 |
max(int a, int b) | int | 返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数 |
min(int a, int b) | int | 返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数 |
rint(double numvalue) | double | 返回最接近 numvalue 的整数值 |
round(T arg) | arg 为 double 时返回 long,为 float 时返回 int | 返回最接近 arg 的整数值 |
random() | double | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0 |
public class MathDemo {
public static void main(String[] args) {
System.out.println("-12.7绝对值:" + Math.abs(-12.7));
System.out.println("12.7向上取整:" + Math.ceil(12.7));
System.out.println("12.4最近整数:" + Math.rint(12.4));
System.out.println("随机数:" + Math.random());
System.out.println("sin30 = " + Math.sin(Math.PI / 6));
System.out.println("cos30 = " + Math.cos(Math.PI / 6));
System.out.println("tan30 = " + Math.tan(Math.PI / 6));
}
}
!java MathDemo.java
-12.7绝对值:12.7
12.7向上取整:13.0
12.4最近整数:12.0
随机数:0.16430537342716423
sin30 = 0.49999999999999994
cos30 = 0.8660254037844387
tan30 = 0.5773502691896257
3.6 System
System 类提供了以下功能:
- 标准输入,标准输出和错误输出流;
- 访问外部定义的属性和环境变量;
- 加载文件和库的方法;
- 用于快速复制数组的实用方法。
System 不可以被实例化,只可以使用其静态方法。
import java.util.Arrays;
public class SystemDemo {
pubilc static void main(String[] args) {
int[] a = {7, 8, 9, 10, 11};
int[] b = {1, 2, 3, 4, 5, 6};
// 从数组a第二个元素开始,复制到b数组的第三个元素,复制3个元素
System.arraycopy(a, 1, b, 2, 3);
System.out.println(Arrays.toString(b));
system.out.println("当前时间:" + System.currentTimeMillis());
System.out.println("java版本信息:" + System.getProperty("java.version"));
System.gc();
System.exit(0);
}
}
!java SystemDemo.java
[1, 2, 8, 9, 10, 6]
当前时间:1715443137491
java版本信息:22
3.7 Random
Random 类实现了一个伪随机数生成器,该生成器使用线性同余算法生成下一个随机数。
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt());
System.out.println(random.nextInt(100 + 1));
System.out.println(random.nextDouble(100));
System.out.println((random.nextBoolean(100 - 40 + 1) + 40));
System.out.println(random.nextLong());
System.out.println(random.nextFloat());
System.out.println(random.nextDouble());
}
}
!java RandomDemo.java
1156110784
36
92
84
6458191128308149796
0.6061311
0.25731708217727656
参考代码
系列文章专栏:
Java入门
1 基础部分
2 面向对象
3 常用类
4 常用类
5 异常
6 函数式编程
持续更新中
7 IO
8 网络编程
9 多线程
10 JDBC
11 反射
12 正则表达式
13 设计模式