Java中的常用工具类

一,Math

Math是lang包中的一个包含了用于执行基本数学运算方法的类,如初等指数、对数、平方根和三角函数。

注:

  1. Math类是final的
  2. Math类的构造函数是private的
  3. Math类的成员都是static的

静态常量:

  1. E:自然对数的底数
  2. PI:圆周率

常用方法:

  1. pow(a,b) a的b次方
  2. sqrt(n): 开平方根
  3. max(a,b) 返回a和b的较大值
  4. min(a,b) 返回a和b的较小值
  5. abs(n) 返回绝对值
  6. random() 返回[0,1)的浮点小数
  7. rint(n) 五舍六入
  8. round(n) 四舍五入
  9. toRadians(n) 角度转弧度值
  10. toDegrees(n)

二,Random

调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。例子如下:

第一种:java.lang.Math.Random;
  • package com.zoo.lion.util;
    public class RandomCoder {
        public static void main(String[] args) {
            random();
        }
     
        private static void random() {
            double random = Math.random();//产生一个[0,1)之间的随机数
            System.out.println(random);
        }
    }
    

第二种:java.util.Random

此类的实例用于生成伪随机数流。

常用方法:

  1. nextInt()

  2. nextInt(bound)

    随机[n,m],公式:r.nextInt(m-n+1)+n

  3. nextDouble() 用于从此随机值生成器生成介于0.0和1.0之间的下一个伪随机双精度值

三,Scanner

一个可以解析基本类型和字符串的文本扫描器

常用方法:

  1. next() /*它会自动地消除有效字符之前的空格,只返回输入的字符,不会得到带空格的字符串。也就是说如果输入了一串字符,到了有空格的时候就 会停止录入,只录入空格前面的东西,空格后面的东西(包括分隔的空格都会保留在缓存区域)

    ​ 除了空格以外,Tab键和Enter键都被视为分隔符(结束符)。*/

  2. nextLine() //只有enter结束录入

  3. nextInt()

  4. nextInt(n):表示输入指定进制的数据,返回对应的十进制数,例如,n为2时,表示输入的数据是二进制数,返回对应的十进制

  5. nextDouble() 用于从此随机值生成器生成介于0.0和1.0之间的下一个伪随机双精度值

注:输入类型与接收类型不匹配时,会发生InputMismatchException输入不匹配异常

四,Arrays

此类包含用来操作数组的各种方法。

注:

  1. Arrays类中的方法都是static的
  2. Arrays类中的构造函数是private的

常用方法:

  1. toString()

  2. binarySearch()

    1. binarySearch(数组,要查找的元素)
    2. binarySearch(Object[] a,int fromIndex,int toIndex,Object key); //在指定范围内查找某一元素

    注:使用binarySearch的前提必须保证数组是升序的,并且元素值是唯一的

  3. sort():对数组元素进行排序

    对数组中的对象属性进行排序

    方式一:

    使用sort(Object[] o)的步骤:

    (1)使自定义类实现Comarable接口

    (2)重写compareTo()方法

    ​ 升序:this.属性 - 参数.属性

    ​ 降序:参数.属性 - this.属性

    方式二:

    使用sort(Object[] o,Comparator c)的步骤:

    (1)创建自定义类实现Comparator接口

    (2)重写compare()方法

    ​ 升序:o1.属性 - o2.属性

       降序:`o2.属性 - o1.属性`
    

    (3)创建实现类对象,作为参数传入sort()方法中

    Arrays.sort(emps,new Comparator<Emp>(){
        @Override
        public int compare(Emp o1, Emp o2) {
            // 按工资升序,工资相同时,按年龄升序
            return o1.salary != o2.salary ? (int)(o1.salary * 100 - o2.salary * 100) :  o1.age - o2.age;
        }
    });
    
  4. fill()

  5. equals()

  6. copyOf()

五,Date

类 Date表示特定的瞬间,精确到毫秒。

package Demo1;

import java.text.SimpleDateFormat;
import java.util.Date;

public class work2 {
    /**
     * 计算自己已经生存的天数
     * @param args
     */
    public static void main(String[] args) throws Exception{
        String startTime = "2001-07-06";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(startTime);
        long birthdayTime = date.getTime();
        long nowBirthday = System.currentTimeMillis();
        System.out.println((nowBirthday - birthdayTime) / 1000 / 24 / 3600);
    }
}

功能:

  1. 把日期解释为年、月、日、小时、分钟和秒值。被Calendar取代
  2. 格式化和解析日期字符串。被DateFormat取代

构造函数:

  1. Date() 返回1970.1.1 00:00:00到此时经历的毫秒数
  2. Date(long l) 1970.1.1 00:00:00 + long毫秒数后的 时间

常用方法:

  1. getTime():获取1970年1月1日到指定Date对象指向的日期之间经历的毫秒数

六,SimepleDateFormat

SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类

格式化(日期->文本):将一个Date对象转换成指定格式的字符串

解析(文本 -> 日期):将一个符合指定格式的日期字符串转换成一个Date对象

格式化:

Date d  = new Date();
// 创建SimpleDateFormat对象,并指定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
String time = sdf.format(d);

​ 解析:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("1986-10-19 17:30:30");

​ 完整代码:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) throws Exception {
//       forMate();
       parse();
     }

    //TODO 解析格式
    private static void parse() throws Exception{
        String s = "2023年11月18日";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date d = sdf.parse(s);
        System.out.println(d);
    }

    //TODO 为日期设置格式
    private static void forMate() {
        //给 SimpleDateFormat 设置格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //传入Date对象指定需要设置的时间 否则默认输出 1970-01-01 08:00:00
        String time = sdf.format(new Date());
        System.out.println(time);
    }
}

eg:一个比较简单的题目为例:计算自己从出生到现在所经历的天数

package Demo1;

import java.text.SimpleDateFormat;
import java.util.Date;

public class work2 {
    /**
     * 计算自己已经生存的天数
     * @param a_hao
     */
    public static void main(String[] args) throws Exception{
        String startTime = "2001-07-06";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(startTime);
        long birthdayTime = date.getTime();
        long nowBirthday = System.currentTimeMillis();
        System.out.println((nowBirthday - birthdayTime) / 1000 / 24 / 3600);
    }
}

七,Calendar

Calendar类是一个抽象类,它为特定瞬间与日历字段之间的转换提供了一些方法。

Calendar提供了一个类方法 getInstance,以获得此类型的一个通用的对象,其日历字段已由当前日期和时间初始化

常用方法:

  1. get(n):根据指定的日历字段获取字段值

  2. set(year,month,date,hour,minute,second)

  3. set(field,value):为指定的日历字段设置值

  4. getTimeInMillis():获取1970年1月1日到指定Calendar对象指向的日期之间经历的毫秒数

  5. getTime():获取Calendar对象的Date对象

    package calendar;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class Demo2 {
        public static void main(String[] args) throws Exception{
            //计算从当前时间到目标时间还需经历多少分钟
            funtionOne();
            funtionTwo();
        }
    
        private static void funtionTwo() {
            Calendar calendar = Calendar.getInstance();
            long nowTime = calendar.getTimeInMillis();
            //月数从零开始,也就是说没有12月,0即是一月
            calendar.set(2023 , 10 , 19 , 6 , 0 , 0);
            long endTime = calendar.getTimeInMillis();
            System.out.println((endTime - nowTime) / 60 / 1000);
    
        }
    
        private static void funtionOne() throws Exception{
            Calendar calendar = Calendar.getInstance();
            String endTime = "2023-11-19 06:00:00";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.parse(endTime));
            long time = sdf.parse(endTime).getTime();
            long nowTime = new Date().getTime();
            System.out.println((time - nowTime) / 60 / 1000);
        }
    }
    
    
  • 17
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值