一、Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
常用方法
方法名 | 功能 |
---|---|
abs() | 返回一个数的绝对值 |
sqrt() | 返回一个数的方根 |
ceil() | 返回一个向上取整 |
floor() | 返回一个数向下取整 |
round() | 返回一个小数四舍五入的结果 |
max() | 返回两个数较大的值 |
min() | 返回两个数较小的值 |
random() | 返回0.0到1.0的随机值 |
二、Arrays类
Arrays里面包含了一系列静态方法,用于管理和操作数组
常用方法
方法名 | 功能 |
---|---|
toString | 返回数组的字符串形式 |
sort | 用于数组的自然排序和定制排序 |
binarySearch | 通过二分查找法进行查找,前提必须排好序 |
copyOf | 数组元素的赋值 |
fill | 数组元素的填充 |
equals | 比较两个元素内容是否完全一致 |
asList | 将一组值,转换成list |
import java.util.Arrays;
import java.util.Comparator;
class test1{
public static void main(String[] args) {
//toString
Integer Array[] = {5,-6,1,8,10};
System.out.println(Arrays.toString(Array)); //[5, -6, 1, 8, 10]
//sort
//1.自然排序
Arrays.sort(Array);
System.out.println(Arrays.toString(Array));
//2.定制排序
Arrays.sort(Array, new Comparator() { //匿名内部类
@Override
public int compare(Object o1, Object o2) {
Integer x = (Integer) o1; //向下转型
Integer y = (Integer) o2;
return y-x; //大于零 或 小于零 决定排序的顺序
}
});
System.out.println(Arrays.toString(Array));
//3.自定义冒泡+定制
int Array1[] = {5,-6,1,8,10};
bubble02(Array1, new Comparator() { //匿名内部类
@Override
public int compare(Object o1, Object o2) {
int i1 = (Integer) o1;
int i2 = (Integer) o2;
return i2 - i1;
}
});
System.out.println(Arrays.toString(Array1));
//binarySearch二叉查找,要求数组必须是有序的数组
Integer[] arr = {1, 2, 90, 123, 567};
int i = Arrays.binarySearch(arr, 90);
System.out.println("index="+i);
//copyOf
Integer[] newArr = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(newArr));
}
//3.自定义冒泡+定制
public static void bubble02(int[] arr, Comparator c){ //Comparator接口
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (c.compare(arr[j], arr[j + 1]) > 0) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
三、System类
常用方法
方法名 | 功能 |
---|---|
exit | 退出当前程序 |
arraycopy | 复制数组元素,比较适合底层调用,一般还是使用Arrays.copyOf完成复制数组 |
currentTimeMillens | 返回当前时间距离1970-1-1的毫秒数 |
gc | 运行垃圾回收机制 |
import java.util.Arrays;
class test1{
public static void main(String[] args) {
/*
方法:arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
src:表示源数组
srcPos:表示从源数组的哪个索引位置开始拷贝
dest:表示目标数组,即把源数组的数据拷贝到哪个数组
destPos:把源数组的数据拷贝到 目标数组的哪个索引
length:从源数组拷贝多少个数据到目标数组
*/
int src[] = {1,2,3};
int test[] = new int[3];
System.arraycopy(src,0,test,0,3);
System.out.println(Arrays.toString(test));
}
}
四、BigInteger和BigDecimal类
当我们在编程中,需要处理很大的整数,long不够用时,可以使用这两个类
BigInteger:适合保存比较大的整型
BigDecimal:适合保存精度更高的浮点型
常用方法
方法名 | 功能 |
---|---|
add | 加 |
subtract | 减 |
multiply | 乘 |
divide | 除 |
import java.math.BigInteger;
class test1{
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("9999999999999999999999999");
System.out.println(bigInteger);
//BigInteger进行加减乘除的时候需要使用对应的方法
//add()
BigInteger bigInteger1 = new BigInteger("1111111111111111111111111");
BigInteger add = bigInteger.add(bigInteger1);
System.out.println("加="+add);
//subtract()
BigInteger subtract = bigInteger.subtract(bigInteger1);
System.out.println("减="+subtract);
//multiply()
BigInteger multiply = bigInteger.multiply(bigInteger1);
System.out.println("乘="+multiply);
//divide()
BigInteger divide = bigInteger.divide(bigInteger1);
System.out.println("除="+divide);
}
}
五、日期类
1.第一代日期类(Date)
Date:精确到毫秒,代表特定的瞬间
SlmpleDateFormat:格式化和解析日期的类,它允许格式化(日期 -> 文本)和解析(文本 ->日期)和规范化
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class test1{
public static void main(String[] args) throws ParseException {
//Date获取当前日期,只不过是国外的格式
Date date = new Date();
System.out.println("当前日期="+date);
//format对日期进行格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String format = sdf.format(date);
System.out.println("格式化后的当前日期="+format);
//parse可以把一个格式化的String转换成对应的Date
//注意:使用的sdf格式需要和你给String的格式一样,否则会抛出转换异常
System.out.println("parse="+sdf.parse(format));
}
}
2.第二代日期类(Calendar)
**Calendar:**是一个抽象类,并且构造器为private,故通过getInstance()来获取实例,其中提供了大量的方法和字段提供给程序员使用,由于该类没有对应的格式化类,所以需要自己组合灵活输出
Calendar instance = Calendar.getInstance();
Calendar类常见的字段:YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、SECOND
import java.text.ParseException;
import java.util.Calendar;
class test1{
public static void main(String[] args) throws ParseException {
//创建该类的实例
Calendar c = Calendar.getInstance();
System.out.println("年="+c.get(Calendar.YEAR));
//这里为什么要 + 1, 因为 Calendar 返回月时候,是按照 0 开始编号
System.out.println("月="+(c.get(Calendar.MONTH)+1));
System.out.println("日="+c.get(Calendar.DAY_OF_MONTH));
//灵活组合
System.out.println(c.get(Calendar.YEAR)+"年"+" "+(c.get(Calendar.MONTH)+1)+"月"+" "+c.get(Calendar.DAY_OF_MONTH)+"日");
}
}
3.第三代日期类
由于Date类被弃用了,Calendar类也存在一些问题 ,而且线程也不安全,所以引出了第三代日期类
JDK8加入的
LocalDate:只包含日期,可以获取日期字段
LocalTime:只包含时间,可以获取时间字段
LocalDateTime:包含日期+时间,可以获取日期和时间字段
import java.text.ParseException;
import java.time.LocalDateTime;
class test1{
public static void main(String[] args) throws ParseException {
//now()返回表示当前日期时间的对象
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
System.out.println("年"+now.getYear());
System.out.println("时"+now.getHour());
}
}
DateTimeFormatter 格式日期类
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
class test1{
public static void main(String[] args) throws ParseException {
LocalDateTime now = LocalDateTime.now();
//使用DateTimeFormatter
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
String format = dtf.format(now);
System.out.println("格式化后的日期="+format);
}
}
Instant 时间戳
类似于Date,提供了一系列和Date类转换的方法
import java.text.ParseException;
import java.time.Instant;
import java.util.Date;
class test1{
public static void main(String[] args) throws ParseException {
//获取时间戳的对象
Instant now = Instant.now();
System.out.println(now);
//通过from 可以把 Instant 转成 Date
Date date = Date.from(now);
//3. 通过 date 的 toInstant() 可以把 date 转成 Instant 对象
Instant instant = date.toInstant();
}
}
LocalDateTime类还有很多方法,可以查看API使用即可