文章目录
解释题目的来意在于这里面的类,我们不需要像定义类一样去定义,系统给定义好了,可以直接在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);
}
*/
}
}
总结
后续还会添加。