文章目录
一.Object类
所在包: java.lang.Object
概念:
- 所有类的根类。
- 任何类都会直接或间接的继承Object类
- 一个类如果没有明确的写出extends 父类,默认的爹就是Object类
方法:
toString
-
如果直接输出对象名,没有重写Object类中的toString方法,默认调用了Object类中的toString。输出的是地址值!
-
如果重写了toString方法,在输出地址值就没有意义了,所以,重写后的toString应该输出内容。
-
如果想让我们自定义的类直接输出,不出现地址值,那么该类就需要重写toString,返回属性值。
重写toString方法:
public class Animal {
private String name;
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
'}';
}
}
equals
System.out.print(p1.equals(p2)); //false
//equals源码
public biilean equals(Object obj){
return (this == obj); //this代表的是p1。
}
==:
- 针对于引用数据类型:比较的是地址值
- 针对于基本数据类型:比较的是数据值
总结:
- 如果想直接输出对象名,不是地址值,重写toString方法。
- 如果比较两个对象是否相等,重写equals方法。
重写equals的方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Animal animal = (Animal) o;
return Objects.equals(name, animal.name);
}
二.Objects类
所在包:java.util.Objects
是一个工具类。
概念
特点:方法都是静态。
访问方式:类名直接调用。
Obejcts里面的equals方法和Object里面的equals方法的区别:
/**
Obejcts里面的equals方法的源码,可以看到里面有判断null的条件
*/
public static boolean equals(Object a, Object b){
return (a == b) || (a != null && a.equals(b));
}
/**
测试
*/
String s = null;
String s1 = "abc";
System.out.println(s.equals(s1)); //报错
System.out.println(Objects.equals(s,s1)); //false
由上可见
Obejcts里面的equals方法可以容忍null值,不会报空指针异常!
三.Date类
所在包:java.util.Date
日期类
概述
表示特定的瞬间,精确到毫秒(1秒 == 1000毫秒)。
毫秒的作用:测试代码的效率。
System.currentTimeMillis() -->获取当前系统毫秒值。
时间原点(国际基准时间)
1970年1月1日 0时0分0秒。
构造方法:
- public Date() -->将当前系统时间封装成Date对象
- public Date(long date); -->将指定的毫秒值变成Date对象;代表的是距离国际标准时间毫秒值后的那个时间。(时差)
成员方法:
-
getTime();将日期对象转换为对应的毫秒值。
-
setTime();修改当前Date对象距离标准时间的毫秒值。
总结:
- 直接利用空参Date对象:获取当前系统时间。
四.DateFormat类
所在的包:java.text.DateFormat
日期格式化类
概念
- 我们直接输出Date对象可是看不太懂!于是java给出了这个类来初始化日期类。
- DateFormat是抽象类不能new对象。
- 使用的时候应该用它的子类SimpleDateFormat
构造方法:
SimpleDateFormat(String pattern)
pattern:格式;规则。
年 y
月 M
日 d
时 H
分 m
秒 s
标准格式:yyyy-MM-dd HH:mm:ss
成员方法:
- String format(Date date):传递的是日期对象,返回格式化后的字符串 -->格式化
- Date parse(String str):传递的是字符串。返回的是 Date对象,将符合规则的 字符串 ,变成Date对象–>解析
使用方法演示
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
System.out.println(simpleDateFormat.format(date)); //2020-03-12 16:04:26打印出当前系统时间
}
五.Calendar类
所在包:java.util
日历类
概念:
为什么会有这个类?
Date要想单独操作年,月,日等等比较麻烦。Calendar类却十分的简单!
- 是一个抽象类
- 方法都是静态的
- 直接类名调用即可
方法:
Calendar getInstance() -->获取Calendar对象 。
int get(int field) -->获取日历字段的值。
void set(int field,int value):给指定的月份
void add(int field,int value):给指定的日历字段,加/减值。
参数field:日历的字段,都是静态常量,类名调用即可!
年:Year
月:MONTH
日:DAY_OF_MONTH …
使用方法
public static void main(String[] args) {
//获取Calendar。
Calendar instance = Calendar.getInstance();
//调用Calendar中的get方法 参数:日历字段YEAR
int YEAR= instance.get(Calendar.YEAR);
System.out.println(YEAR);//2020
//调用Calendar中的set方法
instance.set(Calendar.YEAR,1);
//再次获取
int YEAR1= instance.get(Calendar.YEAR);
System.out.println(YEAR1);//1
//调用Calendar中的add方法
instance.add(Calendar.YEAR,1);//正数+,负数-
//再次获取
int YEAR2= instance.get(Calendar.YEAR);
System.out.println(YEAR2);//2
}
六.Math
所在包:java.lang.Math
数学类
概念
- 方法都是静态的,不能new对象 构造方法私有。
使用方法:
- 类名直接调用。
常用方法:
- int abs(int a) --> 求参数的绝对值返回int。
- double ceil(double a) —>向上取整返回double。
- double floor(double a) —>向下取整返回double。
- int round(float a) —>四舍五入返回int值。
- int max(int a,int b) —>返回两个参数的最大值。
- int min(int a,int b) —>返回两个参数的最小值。
七.system
所在包:java.lang.system
概念
- 方法都是静态的
使用方法:
- 都是类名直接调用
常用方法:
- void exit(int status) —>退出jvm 参数status -->写0就行
- long currenTimeMillis() —>获取当前系统毫秒值 -->可以测试代码效率。
- void arraycopy(Object src,int srcPos,dest,destPos,length)
—>复制老数组到新数组 —> 参数 src:老数组,srcPos:从原数组的那个索引考试复制,dest:目标数组,destPos:从目标数组哪个索引开始粘贴,length:复制多少个。