“可以点击的” 类


解释题目的来意在于这里面的类,我们不需要像定义类一样去定义,系统给定义好了,可以直接在IDEA中直接输入首字母点击。

一、Date类(时间日期类)

1.概述

Date 代表了一个特定的时间,精确到毫秒

2.构造方法

方法名 说明
public Date() 分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date) 分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数

3.常用方法

方法名 说明
public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值

代码如下(示例):

import java.util.Date;

public class IntegerDemo {
    
    
    public static void main(String[] args) {
    
    
        Date d = new Date();
//        System.out.println(d.getTime());
//        System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");//因为得到的时间值为毫秒值,所以我们需要把他转化
        long time = System.currentTimeMillis();//当前时间
//        long time = 1000*60*60;
        d.setTime(time);
        System.out.println(d);
    }
}

有个特别实用的方法(currentTimeMillis()),我们用案例来说:验证for循环打印数字1-9999所需要使用的时间(毫秒)
代码如下(示例):

public class MathLib {
    
    
    public static void main(String[] args) {
    
    
        long start = System.currentTimeMillis();
        for (int i=1;i<=9999;i++){
    
    
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("共花了"+(end-start));
    }
}

当我们需要计算程序运行的时间的时候。

二、SimpleDateFormat类(时间日期类)

1.概述

是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。

2.解析

y 年、M 月、d 日、H 时、m 分、s 秒、

3.构造方法

方法名 说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式

4.常用方法

  • 格式化(从Date到String)
    • public final String format(Date date):将日期格式化成日期/时间字符串
  • 解析(从String到Date)
    • public Date parse(String source):从给定字符串的开始解析文本以生成日期

5.案例

案例需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法
代码如下(示例):

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

/*
工具类
构造方法私有
成员方法静态
 */
public class DateUtils {
    
    
    private DateUtils(){
    
    }
    //Date到String
    public static String dateToString(Date date,String format){
    
    
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(date);
        return s;
    }
    //String到Date
    public static Date stringToDate(String s,String format) throws ParseException {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s);//这里有个异常,异常之后讲
        return d;
    }
}
import java.text.ParseException;
import java.util.Date;
public class DateDemo {
    
    
    public static void main(String[] args) throws ParseException {
    
    
        Date d = new Date();
        //我的时间以yyyy年MM月dd日 HH:mm:ss这个格式输出
        String s1 = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s1);
        //同理
        String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
        System.out.println(s2);
        String s3 = DateUtils.dateToString(d,"HH:mm:ss");
        System.out.println(s3);
        System.out.println("-----------");
        String s = "2021-08-09 12:12:12";
        Date dd = DateUtils.stringToDate(s,"yyyy-MM-dd HH:mm:ss");
        System.out.println(dd);
    }
}

该处使用的url网络请求的数据。

三、Calendar类

1.概述

Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。该方法返回一个Calendar 对象。
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();

2.常用方法

方法名 说明
public int get(int field) 返回给定日历字段的值
public abstract void add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date) 设置当前日历的年月日

3.二月天案例

案例需求:获取任意一年的二月有多少天

代码如下(示例):

import java.util.Calendar;
import java.util.Scanner;

public class DateDemo {
    
    
    public static void main(String[] args)  {
    
    
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        //设置日历对象的年、月、日
        Calendar c = Calendar.getInstance();
        c.set(year,2,1);
        //3月1日往前推一天,就是2月的最后一天
        c.add(Calendar.DATE,-1);
        //获取这一天输出即可
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年的2月有"+date+"天");
    }
}

四、Math类

1.概述

Math 包含执行基本数字运算的方法

2.Math中方法的调用方式

Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用

3.常用方法

方法名 方法名 说明
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a) 返回大于或等于参数的最小double值,等于一个整数
public static double floor(double a) 返回小于或等于参数的最大double值,等于一个整数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow (double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0)

常用方法的举例。
代码如下(示例):

public class MathDemo {
    
    
    public static void main(String[] args) {
    
    
        System.out.println(Math.abs(-34));
        System.out.println(Math.abs(34));
        System.out.println("------------");
        System.out.println(Math.ceil(12.34));
        System.out.println(Math.ceil(12.56));
        System.out.println("------------");
        System.out.println(Math.floor(12.34));
        System.out.println(Math.floor(12.56));
        System.out.println("------------");
        System.out.println(Math.round(12.34F));
        System.out.println(Math.round(12.56F));
        System.out.println("------------");
        System.out.println(Math.max(66,88));
        System.out.println("------------");
        System.out.println(Math.min(3,9));
        System.out.println("------------");
        System.out.println(Math.pow(2.0,3.0));
        System.out.println("------------");
        //System.out.println(Math.random());
        System.out.println((int)(Math.random()*100)+1);//取1到100的值
    }
}

五、Object类

1.概述

Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类,换句话说,该类所具备的方法,所有类都会有一份。
为什么说子类的构造方法默认访问的是父类的无参构造方法?因为他们的顶级父类只有无参构造方法

2.toString方法

当这种情况时,输出的是我们看不懂的东西,我们想要输出来我们易读。需要用到toString方法。
在这里插入图片描述

(1)重写toString方法的方式

Alt + Insert 选择toString
在类的空白区域,右键 -> Generate -> 选择toString

(2)toString方法的作用

以良好的格式,更方便的展示对象中的属性值

(3)上述案例

代码如下(示例):

package day12;

public class A {
    
    
    private String name;
    private int age;

    public A() {
    
    
    }

    public A(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "A{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class text {
    
    
    public static void main(String[] args) {
    
    
        A a = new  A("hjt",23);
        System.out.println(a);
    }
}

最后结果在这里插入图片描述

3.equals方法

(1)quals方法的作用

用于对象之间的比较,返回true和false的结果,举例:s1.equals(s2); s1和s2是两个对象

(2)重写equals方法的场景

不希望比较对象的地址值,想要结合对象属性进行比较的时候。alt + insert 选择equals() and hashCode(),IntelliJ Default,一路next,finish即可

(3)重写equals方法的方式

在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。

(4)举例

代码如下(示例):

public class Student {
    
    
    private String name;
    private int age;

    public Student() {
    
    
    }

    public Student(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
    
    
        //this ----s1
        //o    ----s2
        //比较地址是否相同,如果相同,直接true
        if (this == o) return true;
        //判断参数是否为null
        //getClass() != o.getClass()这句是判断是否来自同一个类
        if (o == null || getClass() != o.getClass()) return false;

        //向下转型
        Student student = (Student) o;//student=s2;
        //比较年龄是否相同
        if (age != student.age) return false;//age s1的age; student.age s2的age
        //比较姓名内容是否相同
        return name != null ? name.equals(student.name) : student.name == null;
    }

}

public class ObjectDemo {
    
    
    public static void main(String[] args) {
    
    
        Student s1 = new Student();
        s1.setName("hjt");
        s1.setAge(21);

        Student s2 = new Student();
        s2.setName("hjt");
        s2.setAge(21);
        //需求;比较两个对象的内容是否相同
        //System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        /*
        public boolean equals(Object obj) {
            //this ----s1
            //obj  ----s2
            return (this == obj);
        }
         */
    }
}

总结

后续还会添加。

Guess you like

Origin blog.csdn.net/m0_51064043/article/details/120993787