Java常用实用类(我的简单理解)

Java常用实用类(我的简单理解)

Object

类默认继承Object类,所以可以重写Object类中toString

类默认继承Object类,所以可以重写Object类中toString和equals

注意:如果没有重写equals:

​ 基本数据类型:比较值

​ 引用数据类型:比较地址值

自定义重写equals方法

@Override
public boolean equals(Object o) {
    //增加一个判断,传递的参数obj是this本身,直接返回true,提高程序效率
    if (o==this){
        return true;
    }
    //增加一个判断,传递的参数obj是null,直接返回false,提高程序效率
    if (o==null){
        return false;
    }
    if (o instanceof Person) {//问题在于,如果比较的不是person类怎么办
        //使用向下转型(强转)把object转为person
        Person person = (Person) o;
        boolean b=this.name.equals(person.name) &&  this.age== person.age;//equals比较基本数据类型:比较值
        return b;
    }
    //不是person类直接false
    return false;
}

idea模板重写

 @Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Person person = (Person) o;

    if (age != person.age) return false;
    return name != null ? name.equals(person.name) : person.name == null;
}

Date

java.util.Date:表示时间的类,精确到毫秒 1000毫秒(ms)=1秒(s)

用来计算时间

构造方法

Date date = new Date(); //Date类的空参数构造方法:Date()获取的就是当前系统的日期和时间

Date date = new Date(1000); //Date类的带参数构造方法:Date(long date):传递毫秒值,把毫秒转换为Data日期

成员方法

public long getTime();//long getTime() 返回1970年...至今的毫秒数

测试

public class demo1概述 {
    public static void main(String[] args) {
        demo1();
        demo2();
        demo3();
    }
    //Date类的空参数构造方法:
        /*
        Date()获取的就是当前系统的日期和时间
        */
    private static void demo1() {
        Date date = new Date();
        System.out.println(date);//Thu Jun 03 17:20:41 CST 2021
    }
    // Date类的带参数构造方法:
        /*
        Date(long date):传递毫秒值,把毫秒转换为Data日期
        */
    private static void demo2() {
        Date date = new Date(1000);
        System.out.println(date);//Thu Jun 03 17:20:41 CST 2021
    }
    //Date类的成员方法
    /*
    long getTime() 返回1970年...至今的毫秒数
     */
    private static void demo3() {
        Date date = new Date();
        System.out.println(date.getTime());
    }
}
结果

Fri Jun 04 13:50:54 CST 2021
Thu Jan 01 08:00:01 CST 1970
1622785854797

DateFormat

java.text.DateFormat(抽象类):日期于文本的相互转换

格式化:(日期->文本)
   String format(Date date)

解析: (文本->日期)
   Date parse(String source)

使用:DateFormat是抽象类,无法直接使用,那么可以间接使用子类simpleFormat类

直接上案例

public class demo1概述 {
    //构造方法
    /*
      simpleDateFormat(String pattern)
                 参数:String pattern 指定的模式
                 模式(pattern):  yyyy:MM:dd  HH:mm:ss
      这个怎么玩?
              1.创建simpleDateFormat对象,构造方法中传递指定的模式
              2(格式化).调用simpleDateFormat对象的方法format,按照构造方法中指定的模式,把日期转为符合模式的文本(String)
              2(解析).调用simpleDateFormat对象的方法parse,按照构造方法中指定的模式,把文本(String)转为符合模式的日期(Date)
     */
    public static void main(String[] args) throws ParseException {
        //1.创建simpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy:MM:dd  HH:mm:ss");
        Date date=new Date();
        //2(格式化).调用simpleDateFormat对象的方法format,按照构造方法中指定的模式,把日期转为符合模式的文本(String)
        String s = simpleDateFormat.format(date);
        System.out.println(s);
        //2(解析).调用simpleDateFormat对象的方法parse,按照构造方法中指定的模式,把文本(String)转为符合模式的日期(Date)
        Date parse = simpleDateFormat.parse(s);
        System.out.println(parse);
    }

}
运行结果

2021:06:04 13:35:44
Fri Jun 04 13:35:44 CST 2021

案例升级

//练习:
      /*
      请使用日期时间相关的api,计算出一个人已经出生了多少天?
      */
public class Test {
       //分析
       /*
        1.获取出生日期,Scanner.next()方法
        2.把获取到的日期解析
        3.把出生日期转化为毫秒值
        4.获取当前日期,转化为毫秒值
        5.用现在时间的毫秒值减去出生日期毫秒值
        6.转化为天数
         */
    public static void main(String[] args) throws ParseException {
        //1.获取出生日期,Scanner.next()方法
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的出生日期,格式为yyyy-MM-dd");
        String birthDay = scanner.next();
        //2.把获取到的日期解析
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
        Date birthDay2 = s.parse(birthDay);
        //3.把出生日期转化为毫秒值
        long birthDay2Time = birthDay2.getTime();
        //4.获取当前日期,转化为毫秒值
        Date date = new Date();
        long nowDate = date.getTime();
        //5.用现在时间的毫秒值减去出生日期毫秒值
        long day = nowDate - birthDay2Time;
        // 6.转化为天数
        System.out.println("您至今出生了:"+day/1000/24/60/60+"天.");
    }
}

运行结果

请输入您的出生日期,格式为yyyy-MM-dd
2008-12-5
您至今出生了:4564天.

Calendar

java.util.Calendar(抽象类):日历类

/*
   Calendar是一个抽象类,提供了很多操作日历字段的方法(year,month,day_of_month,hour)
   Calendar类无法直接创建对象,只能通过getInstance(),该方法返回Calendar的子类对象
   static Calendar getInstance()
 */

测试

public class Test {
    /*
    Calendar常用方法
    1.public int get(int field)               field:日历字段(year,month,day_of_month,hour)
    2.public void set(int field,int value)
    3.public abstract void add(int field,int amount)     amount:时间量
    4.public Date getTime()                              把calendar对象转换为日期
     */
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //1.get()
        System.out.println(calendar.get(YEAR));
        //2.set()
        calendar.set(YEAR,2020);
        System.out.println(calendar.get(YEAR));
        //3.add
        calendar.add(YEAR,20);
        System.out.println(calendar.get(YEAR));
        //4.getTime
        System.out.println(calendar.getTime());
    }
}
运行结果

2021
2020
2040
Mon Jun 04 13:41:36 CST 2040

System

java.lang.System:获取于系统相关的信息或者系统级操作

/*
   常用方法:
        public static long currentTimeMills();返回以毫秒为单位的当前时间
        public static void arrayCopy(Object src,int srcPos,Object dest,int destPos,int length)
        :将数组中指定的数据拷贝到另一数组中
 */

测试

public class Test {
    public static void main(String[] args) {
        demo02();
    }

    private static void demo02() {
        //将数组A中前三个元素,复制到B的前三个位置上
        int[] A={1,2,3,4,5};
        int[] B={6,7,8,9,0};
        System.out.println("复制前:"+ Arrays.toString(B));
        System.arraycopy(A,0,B,1,3);
        System.out.println("复制后:"+ Arrays.toString(B));
    }

    private static void demo1() {
        System.out.println(System.currentTimeMillis());//用来测试程序的效率
        long start = System.currentTimeMillis();
        for (int i = 0; i<1000; i++){
            System.out.print(i);
            if (i%50==0){
                System.out.println(" ");
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("用时"+(end-start));
    }
}
测试结果

复制前:[6, 7, 8, 9, 0]
复制后:[6, 1, 2, 3, 0]
1622785586922
0
1234567891011121314151617181920
2122232425262728293031323334353637383940
4142434445464748495051525354555657585960
6162636465666768697071727374757677787980
81828384858687888990919293949596979899
用时22473

StringBuilder

Java.lang.StringBuilder: 字符串缓冲区,提高效率

/*
    构造方法:
          public StringBuilder():构造一个空的StringBuilder容器
          public StringBuilder(String str):构造一个空的StringBuilder容器,并把字符串添加进去
    常用方法:
          public StringBuilder append(....):添加任意类型的字符串形式,并返回当前对象自身
          public String toString():将当前的对象转换为String对象
          public StringBuilder reverse():反转内容
*/

测试

public class test {
    public static void main(String[] args) {
        //构造方法
        /*StringBuilder builder = new StringBuilder();
        System.out.println("builder:"+builder);
        StringBuilder builder2 = new StringBuilder("aaaa");
        System.out.println("builder:"+builder2);*/

        //常用方法
        StringBuilder builder = new StringBuilder();
        builder.append("ccc");
        System.out.println(builder);
        /*
        链式编程:
         */
        builder.append("ccc").append(123).append(true);
        System.out.println(builder);
        builder.reverse();
        System.out.println(builder);


        //字符串和StringBuilder相互转化
        /*
           String->StringBuilder:StringBuilder构造方法
           StringBuilder->String:toString
         */
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值