Java自学笔记—其他类
Arrays
/**
* @author Lspero
* @version 1.0
*/
public class ArraysMethod {
public static void main(String[] args) {
Integer[] integers = {1, 10, 7, 8, 2, 11};
// for (int i = 0; i < integers.length; i++) {
// System.out.println(integers[i]);
// }
// 输出数组
System.out.println(Arrays.toString(integers));
//排序, 可以通过传入一个Comparator接口实现定制排序
//Arrays.sort(integers);
Arrays.sort(integers, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
Integer i1 = (Integer) o1;
Integer i2 = (Integer) o2;
return i1 - i2;
}
});
System.out.println("排序后 = " + Arrays.toString(integers));
// 二分查找,要有序数组(升序),如果不存在,则返回 -(low +1),low为该值在序列中排序对应的索引
int i = Arrays.binarySearch(integers,7);
System.out.println(i);
//copyOf(arr, a) 数组元素复制,从arr中复制a个元素,若a > arr.length就在某尾加null
// 小于0抛异常NegativeArraySizeException
Integer[] newintergers = Arrays.copyOf(integers, integers.length);
//fill(str, a ) 数组填充用a替换所有元素
Integer[] num = {1, 2, 3};
Arrays.fill(num, 99);
System.out.println(Arrays.toString(num));
// equals判断是否相等
Integer[] num2 = {1, 2, 3};
System.out.println(num.equals(num2));
//asList 转换为list
List<Integer> aslist = Arrays.asList(1, 2, 3);
System.out.println("aslist= " + aslist);
//运行类型、方法返回类型 Arrays的静态内部类ArrayList
System.out.println(aslist.getClass());
}
}
sort()
方法可以通过传入一个匿名内部类实现定制排序
//Arrays.sort(integers);
Arrays.sort(integers, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
Integer i1 = (Integer) o1;
Integer i2 = (Integer) o2;
return i1 - i2;
}
});
System
/**
* @author Lspero
* @version 1.0
*/
public class System_ {
public static void main(String[] args) {
System.out.println("ok1");
int[] src = {1, 2, 3};
int[] dest = new int[3];
//arraycopy(源数组 src, 源数组初始索引0, 目标数组dest, 目标数组存放初始1, 目标数组拷贝长度2);
System.arraycopy(src, 0, dest, 1, 2);
System.out.println(Arrays.toString(dest));
// 返回时间
System.out.println(System.currentTimeMillis());
System.exit(0);
System.out.println("ok2");
}
}
大数
BigInteger
/**
* @author Lspero
* @version 1.0
*/
public class BigInteger_ {
public static void main(String[] args) {
// long l = 99999999999999999999; // too large
BigInteger biginteger = new BigInteger("99999999999999999999999");
BigInteger biginteger2 = new BigInteger("7");
System.out.println(biginteger);
// 加减乘除需要使用对应的方法
System.out.println(biginteger.add(biginteger2));
System.out.println(biginteger.subtract(biginteger2));
System.out.println(biginteger.multiply(biginteger2));
System.out.println(biginteger.divide(biginteger2));
}
}
BigDecimal
/**
* @author Lspero
* @version 1.0
*/
public class BigDecimal_ {
public static void main(String[] args) {
double d = 1.11111122222222222222222222;//精度不够
BigDecimal bigDecimal = new BigDecimal("1.11111122222222222222222222");
BigDecimal bigDecimal2 = new BigDecimal("1.2222222222333333333");
System.out.println(d);
// 加减乘除
System.out.println(bigDecimal.add(bigDecimal2));
System.out.println(bigDecimal.subtract(bigDecimal2));
System.out.println(bigDecimal.multiply(bigDecimal2));
//可能除不尽,会抛异常
//System.out.println(bigDecimal.divide(bigDecimal2));
//在调用时指定精度即可,BigDecimal.ROUND_CEILING会保留分子精度
System.out.println(bigDecimal.divide(bigDecimal2, BigDecimal.ROUND_CEILING));
}
}
日期类
Date
/**
* @author Lspero
* @version 1.0
*/
public class Date_ {
public static void main(String[] args) throws Exception {
// Date 获取当前时间,输出为国外格式,因此常常需要转化
Date date = new Date();
System.out.println(date);
//格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String d = sdf.format(date);
System.out.println(d);
Date date2 = new Date(8956856);
System.out.println(date2);
// 把一个格式化的字符串,转成Date
Date parse = sdf.parse("2021年10月31日 10:47:31 星期日");
System.out.println(parse);
}
}
Calendar
/**
* @author Lspero
* @version 1.0
*/
public class Calendar_ {
public static void main(String[] args) {
// Calendar 是一个抽象类 构造器私有,getInstance获取
Calendar c = Calendar.getInstance();
System.out.println(c);
// 没有提供格式,要自己组合
System.out.println("年 = " + c.get(Calendar.YEAR));
// 月份从0开始,因此要加1
System.out.println("月 = " + (c.get(Calendar.MONTH) + 1) );
// 默认12小时
System.out.println("12小时制 = " + c.get(Calendar.HOUR));
// 24小时
System.out.println("24小时制 = " + c.get(Calendar.HOUR_OF_DAY));
/*缺点
* 可变性
* 偏移性
* 格式化
* 线程不安全
* 不能处理闰秒,每个2天多1秒
* */
}
}
Instant
* @author Lspero
* @version 1.0
*/
public class Instant_ {
public static void main(String[] args) {
// 时间戳 Instant
Instant now = Instant.now();
System.out.println(now);
// 转成Date
Date date = Date.from(now);
// 转成Instant
Instant instant = date.toInstant();
}
}
LocalDateTime
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
/**
* @author Lspero
* @version 1.0
*/
public class LocalDateTime_ {
public static void main(String[] args) {
// JDK8加入
//LocalDate
//LocalTime
//LocalDateTime
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
System.out.println("年 = " + ldt.getYear());
System.out.println("月 = " + ldt.getMonth());
System.out.println("月 = " + ldt.getMonthValue());
System.out.println("日 = " + ldt.getDayOfMonth());
System.out.println("时 = " + ldt.getHour());
System.out.println("分 = " + ldt.getMinute());
System.out.println("秒 = " + ldt.getSecond());
// 定制输出
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss E");
String format = dtf.format(ldt);
System.out.println(format);
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
// 提供plus 和 minus 方法 可以加减
LocalDateTime localDateTime = ldt.plusDays(890);
System.out.println("890天后是 " + dtf.format(localDateTime));
LocalDateTime localDateTime02 = ldt.minusMinutes(89465);
System.out.println("89465分钟前是 " + dtf.format(localDateTime02));
}
}
总结
Java 提供很多类,并不用将每个方法记住,可以通过API或者类图的方式查询