1.System的用法:
System类中都是静态方法可以直接通过类名.方法名调用。
//返回1970至今的时间戳
public static long currentTimeMillis()
//终止当前运行的Java虚拟机,参数为状态码 0表示正常退出 非0表示不正常退出
public static void exit(int status)
用的最多的就是输入流
-- System.in
//一般记录用户输入的内容
Scanner input = new Scanner(System.in);
打印数据
//如果打印自定义对象 比如Student 的引用stu
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) {
//判断stu是否为null 不为null 就调用Object类toString();
return (obj == null) ? "null" : obj.toString();
}
2.日期的操作:
2.1Date的用法:
java.util.Date; util包里面的类都是工具类,可以说是为了项目服务的
无参构造:
public Date()
获取的是当前时间的Date对象。
举例:
Date date = new Date();
System.out.println(date);
结果:Wed Aug 11 20:23:35 CST 2021
有参构造:
public Date(long date)
使用给定的毫秒时间值构造一个 Date对象。
举例:
Date date = new Date(33673440000L);
System.out.println(date);//返回的是一个对象 从1970加上一年的时间戳的一个对象
结果:Tue Jan 26 01:44:00 CST 1971
getTime()方法:
public long getTime()
返回自1970年1月1日至今的时间戳 单位:毫秒数
举例:
//方式一:获取从1970年至今的时间戳
Date date = new Date();
long time = date.getTime();
System.out.println(time);
//方式二:获取从1970年至今的时间戳
System.out.println()System.currentTimeMillis();
结果:1628683905036
既然可以设置就可以修改时间戳
setTime()方法:
public void setTime(long time)
设置时间戳 从1970 + time的一个时间戳
举例:
Date date = new Date();
//设置一年的时间戳 365*24*60*60*1000=33673440000
date.setTime(33673440000L);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取到的字符串对象 是从1970年加上一年的时间
String str = format.format(date);
System.out.println(str);
结果:1971-01-26 01:44:00
2.2 SimpleDateFormat 的用法:
用途:SimpleDateFormat是一个具体的类,用于格式化和解析日期。
可以通过format()将对象转换成字符串,或者通过parse()字符串转换成对象格式。
format()方法:
public final String format(Date date){
//源码具体实现省略,目前只关注参数。(想深入了解再去看底层具体的实现过程)
}
Date date -> 传入的是对象的引用(或对象名)
举例:
public class DateTest {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = format.format(date);
System.out.println(str);
}
}
结果:2021-08-11 00:18:08
parse()方法:
public Date parse(String source) throws ParseException {
//源码具体实现省略,目前只关注参数。
}
String source -> 传入需要转换的年月日 时分秒 格式与SimpleDateFormat("yyyy-MM-dd HH:mm:ss")一致
举例:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = format.parse("1999-12-20 06:47:54");
System.out.println(parse);
结果:Mon Dec 20 06:47:54 CST 1999
-- 需求:计算你活了多少天?
具体实现:
public class Demo {
public static void main(String[] args) throws ParseException {
//获取1970年到1998年 与 1970年到现在的毫秒数 两者相减
Scanner input = new Scanner(System.in);
System.out.println("请输入你的出生年月日 格式为2000-03-10");
String text = input.nextLine();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//将用户输入的年月日转换为对象格式
Date parse = format.parse(text);
//获取时间戳
long birthTime = parse.getTime();
//获取当前时间戳
long currentTime = System.currentTimeMillis();
System.out.println("你已经"+(currentTime-birthTime)/1000/60/60/24/365 +"岁了!");
}
}
图解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMZPIXui-1628697154741)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1628614620415.png)]
2.3 Calendar的用法
我们可以通过Calendar去获取年月日等等一些需求,不用Date类是因为许多方法已经过时。
既然可以代替Date完成需求,自然也是java.util.Calendar
//可以看出Calendar是一个抽象类(抽象类不可以实例化),
public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>{}
//不需要通过子类去完成操作,Calendar提供了一个可以获取该类对象的一个静态方法
public static Calendar getInstance(){}
getTime()方法:
//获取当前时间对象
public final Date getTime()
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
System.out.println(time);//Wed Aug 11 20:57:01 CST 2021
}
}
setTime()方法:
//设置指定Date对象,并获取
public final void setTime(Date date)
Date date = new Date();
date.setTime(33673440000L*5);
calendar.setTime(date);
System.out.println(calendar.getTime());//Sun May 04 00:40:00 CST 1975
如何获取年月日,时分秒.
@Test
public void test() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONDAY);
int date = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
System.out.println("现在是"+year+"年"+month+"月"+date+"日"+" "+hour+"时"+minute+"分"+second+"秒");
}
事实上,这些数据都是存储在数组中
-- 源码如下:
protected int fields[];//存储数据的数组
public int get(int field) {
complete();
//通过Calenday中定义的年月日,时分秒对应的常量值,从数组中获取相应的值
return internalGet(field);
}
protected final int internalGet(int field){
//通过索引获取指定的元素
return fields[field];
}
常量的定义:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nhqd6UCR-1628697154746)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1628688154252.png)]
其他操作:
@Test
public void test2() {
Calendar cal = Calendar.getInstance();
//今天是这个月的第几天
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//这周是这个月的第几周
int week = cal.get(Calendar.WEEK_OF_MONTH);
System.out.println(week);
//今天是今年的第几天
int dayYear = cal.get(Calendar.DAY_OF_YEAR);
System.out.println(dayYear);
}
设置自定义年月日:
Calendar cal = Calendar.getInstance();
cal.set(2000,2,18);
Date time = cal.getTime();
System.out.println(time);//Sat Mar 18 21:34:03 CST 2000
-- 计算你活了多少天? 需求使用Calendar完成
@Test
public void test3() {
Calendar cal = Calendar.getInstance();
cal.set(2000,2,18);
Date date = cal.getTime();
//获1970到你出生的时间戳
long birthTime = date.getTime();
//获取当前时间戳
long currentTime = System.currentTimeMillis();
System.out.println("你已经"+(currentTime-birthTime)/1000/60/60/24/365 +"岁了!");
}
3. Objects的用法:
为什么要使用 java.util.Objects 里面的 equals() ?
使用Object类中的equals()会出现什么问题?
public class ObjectsTest {
public static void main(String[] args) {
String text = null;
System.out.println(text.equals("abc"));
}
}
运行完后出现 空指针异常 java.lang.NullPointerException
String text = null;
System.out.println(Objects.equals(text,"abc"));//false
-- 使用Objects中的equals()如何避免空指针异常
-- 源码如下:
public static boolean equals(Object a, Object b) {
//首先这是一个短路或运算
//如果两个引用地址相等,返回true
//如果两个引用地址不相等,判断参数a是否不等于null 并且参数a是否等于参数b
return (a == b) || (a != null && a.equals(b));
}
判断参数是否为null的方法
@Test
public void test(){
Integer value = null;
if (Objects.isNull(value)){
System.out.println("请传递正确的值");
}
}
4.Math的用法:
Math
类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
举例:
public class MathTest {
@Test
public void test(){
//求绝对值
int abs = Math.abs(-34);
System.out.println(abs);
//参数一的指数倍(参数二)
double pow = Math.pow(2, 3);
System.out.println(pow);
//返回最大值
int max = Math.max(12, 3);
System.out.println(max);
//返回最小值
int min = Math.min(10, 19);
System.out.println(min);
//返回 [0,1)
double random = Math.random();
System.out.println(random);
}
}
round()方法:
/**
* 1、参数的小数点后第一位<5,运算结果为参数整数部分。
*
* 2、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。
*
* 3、参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。
*
* 总结:大于五全部加,等于五正数加,小于五全不加。
*/
System.out.println("11.8 : " + Math.round(11.8));// 12
System.out.println("-11.8 : " + Math.round(-11.8));// -12
System.out.println("11.3 : " + Math.round(11.3));// 11
System.out.println("-11.3 : " + Math.round(-11.3));// -11
System.out.println(Math.round(-1.5));//-1
System.out.println(Math.round(1.5));//2
System.out.println(Math.round(-3.35));//3
System.out.println(Math.round(3.35));//3
5.Arrays的用法
- 该类包含用于操作数组的各种方法(如排序和搜索)。
列举如下一下方法:
//数组转集合
static <T> List<T> asList(T... a)
//二分查找(数组的元素必须是有序的)
static int binarySearch(int[] a, int key)
//数组扩容 给原来的数组指定长度
static int[] copyOf(int[] original, int newLength)
//对数组排序(默认是升序)
static void sort(int[] a)
//返回数组的元素
static String toString(int[] a)
演示:
@Test
public void test(){
Integer[] nums = {1,3,0,19,28};
List<Integer> list = Arrays.asList(nums);
System.out.println(list);
}
@Test
public void test2(){
int[] nums = {1,3,0,19,7,4,28};
//排序
Arrays.sort(nums);
//查找7索引位置
int value = Arrays.binarySearch(nums, 7);
System.out.println(value);
}
@Test
public void test3(){
int[] nums = {1,3,0,19,7,4,28};
System.out.println(nums.length);//7
//扩容到长度为20
nums = Arrays.copyOf(nums,20);
System.out.println(nums.length);//20
}
@Test
public void test4(){
int[] nums = {1,3,0,19,7,4,28};
//不遍历 查看数组所以元素
System.out.println(Arrays.toString(nums));
}
6.BigDecimal的用法
金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。
BigDecimal 提供了加减乘除等操作。
具体方法如下:
//相加
public BigDecimal add(BigDecimal augend)
//相减
public BigDecimal subtract(BigDecimal subtrahend)
//相乘
public BigDecimal multiply(BigDecimal multiplicand)
//相除
public BigDecimal divide(BigDecimal divisor)
测试:
@Test
public void test() {
BigDecimal b1 = new BigDecimal("2.2");
BigDecimal b2 = new BigDecimal("4");
System.out.println(b1.add(b2));//6.2
System.out.println(b1.subtract(b2));//-1.8
System.out.println(b1.multiply(b2));//8.8
System.out.println(b1.divide(b2));//0.55
}
比较方法:(不能使用equals()去比较)
//如果调用者的值小于val结果为-1 反之结果为1 相等结果为0
public int compareTo(BigDecimal val)
相除
public BigDecimal divide(BigDecimal divisor)
测试:
```java
@Test
public void test() {
BigDecimal b1 = new BigDecimal("2.2");
BigDecimal b2 = new BigDecimal("4");
System.out.println(b1.add(b2));//6.2
System.out.println(b1.subtract(b2));//-1.8
System.out.println(b1.multiply(b2));//8.8
System.out.println(b1.divide(b2));//0.55
}
比较方法:(不能使用equals()去比较)
//如果调用者的值小于val结果为-1 反之结果为1 相等结果为0
public int compareTo(BigDecimal val)
如果觉得对你有帮助记得点点关注 ~ ~。