1、Object类
java.lang.Object类是java语言中的根类,即所有类的父类(超类),它描述的方法,其子类均可用。
toString方法
public String toString() :返回该对象的字符串表示 ,该字符串内容为对象的类型+@+内存地址。 直接打印对象的名字时,其实就是在调用对象的toString方法,若输出为地址值,则说明该对象没有重写toString方法。 在IDEA中定义类时,可用快捷键 覆盖重写toString方法:alt+insert—>toString()。
public static void main ( String[ ] args) {
Scanner sc = new Scanner ( System. in) ;
System. out. println ( sc) ;
ArrayList< Integer> list = new ArrayList < > ( ) ;
list. add ( 1 ) ;
list. add ( 2 ) ;
list. add ( 3 ) ;
System. out. println ( list) ;
}
public class Person {
private String name;
private int age;
@Override
public String toString ( ) {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}' ;
}
}
equals方法
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。 如果没有覆盖重写equals方法,那么Object类中默认进行“==”运算符的对象地址比较,只要不是同一对象,结果必然为false。 如果希望进行对象的内容的比较 ,即所有或指定的部分成员变量相同,就判定两个对象相同,则可以覆盖重写equals方法。 IDEA中的覆盖重写equals方法的快捷键 :alt+insert—>equals() and hashCode()—>next—>next
import java. util. Objects;
public class Person {
private String name;
private int age;
@Override
public String toString ( ) {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}' ;
}
@Override
public boolean equals ( Object o) {
if ( this == o) return true ;
if ( o == null || getClass ( ) != o. getClass ( ) ) return false ;
Person person = ( Person) o;
return age == person. age &&
Objects. equals ( name, person. name) ;
}
@Override
public int hashCode ( ) {
return Objects. hash ( name, age) ;
}
}
Objects类
java.util.Objects类是JDK7添加的Objects工具类,提供一些方法来操作对象,由一些静态方法组成,这些方法是null-save(空指针安全的)或 null-tolerant(容忍空指针的) ,用于计算对象的hashCode、返回对象的字符串式形式、比较两个对象。 在比较两个对象时,Object类的equals方法容易抛出空指针异常 ,而Objects类的equals方法优化了这个问题 。
public static boolean equals ( Object a, Object b) {
return ( a== b) || ( a!= null&& a. equals ( b) ) ;
}
2、日期时间类
Date类
java.util.Date类 表示特定的瞬间,精确到毫秒 。(1000毫秒=1秒) 毫秒值的作用:对时间和日期进行计算 。 构造方法: public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。(中国处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。) 成员方法: public long getTime() 把日期对象转换成对应的时间毫秒值。
import java. util. Date;
public class DateDemo {
public static void main ( String[ ] args) {
System. out. println ( new Date ( ) ) ;
System. out. println ( new Date ( 0 L) ) ;
}
}
DateFormat类
java.text.DateFormat 是日期/时间格式化子类的抽象类 ,通过这个类可以完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。 格式化 :按照指定的格式,从Date对象转换为String对象。解析 :按照指定的格式,从String对象转换为Date对象。构造方法:
public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。 由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。 这个类需要一个**模式(格式)**来指定格式化或解析的标准。 参数pattern是一个字符串,代表日期时间的自定义格式。(y年,M月,d日,H时,m分,s秒) 成员方法: public String format(Date date) :将Date对象格式化为字符串。 public Date parse(String source) :将字符串解析为Date对象。
import java. text. SimpleDateFormat;
import java. util. Date;
public class DateDemo {
public static void main ( String[ ] args) {
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
Date date = new Date ( ) ;
System. out. println ( date) ;
String d = sdf. format ( date) ;
System. out. println ( d) ;
}
}
解析方法的注意事项:
public Date parse(String source) throws ParseException parse方法声明了一个异常叫ParseException,如果字符串和构造方法的模式不一样,则程序会抛出异常,调用了一个抛出异常的方法,就必须处理这个异常,要么throws继续抛出异常,要么try catch自己处理。
import java. text. DateFormat;
import java. text. ParseException;
import java. text. SimpleDateFormat;
import java. util. Date;
public class DateDemo2 {
public static void main ( String[ ] args) throws ParseException {
DateFormat df = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
String s = "2030-10-14 00:00:00" ;
Date date = df. parse ( s) ;
System. out. println ( date) ;
}
}
练习
使用日期时间相关的API,计算出一个人已经出生了多少天。
import java. text. ParseException;
import java. text. SimpleDateFormat;
import java. util. Date;
import java. util. Scanner;
public class DateExcise {
public static void main ( String[ ] args) throws ParseException {
Scanner sc = new Scanner ( System. in) ;
System. out. println ( "请输入出生日期,格式为:yyyy-MM-dd" ) ;
String s = sc. next ( ) ;
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
Date date = sdf. parse ( s) ;
long birthdayTime = date. getTime ( ) ;
long todayTime = new Date ( ) . getTime ( ) ;
long time = todayTime - birthdayTime;
System. out. println ( time/ 1000 / 60 / 60 / 24 ) ;
}
}
Calendar类
java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。 Calendar为抽象类 ,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下: Calendar静态方法
public static Calendar getInstance() :使用默认时区和语言环境获得一个日历 常用成员方法:
public int get(int field) :返回给定日历字段的值。 (YEAR 年 , MONTH 月(从0开始,可以+1使用) ,DAY_OF_MONTH 月中的天(几号) ,HOUR 时(12小时制) , HOUR_OF_DAY 时(24小时制) , MINUTE 分 ,SECOND 秒 ,DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用) public void set(int field, int value) :将给定的日历字段设置为给定值。 public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或减去指定的时间量。 public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
import java. util. Calendar;
import java. util. Date;
public class CalendarDemo {
public static void main ( String[ ] args) {
Calendar c = Calendar. getInstance ( ) ;
c. set ( Calendar. YEAR, 2030 ) ;
c. add ( Calendar. DAY_OF_MONTH, 2 ) ;
c. add ( Calendar. YEAR, - 3 ) ;
int year = c. get ( Calendar. YEAR) ;
int month = c. get ( Calendar. MONTH) + 1 ;
int dayOfMonth = c. get ( Calendar. DAY_OF_MONTH) ;
System. out. println ( year + "年" + month + "月" + dayOfMonth + "日" ) ;
Date date = c. getTime ( ) ;
System. out. println ( date) ;
}
}