常用类库的使用

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()
返回自197011日至今的时间戳 单位:毫秒数 

举例:

 //方式一:获取从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)

如果觉得对你有帮助记得点点关注 ~ ~。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值