* Object 类是所有类的父类,若一个类没有指定继承的类则继承Object。任一类都直接或间接继承于Object
① toString()
* 源码
public String toString() {
return getClass().getName() + '@' + Integer.toHexString(hashCode())
}
* 若不重写 toString() 则返回 对象类型 + @ + 地址的哈希值
* 重写 toString()
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
② equals()
* 源码
public boolean equals(Object obj) {
return (this == obj);
}
* 若不重写 equals() 则比较两个对象的地址值
* 重写 equals()
@Override
public boolean equals(Object o) {
//判断是否为同一个对象
if (this == o)
return true;
//判断是否为空,是否为同一引用类型
if (o == null || getClass() != o.getClass())
return false;
//向下转型
Student_equals that = (Student_equals) o;
//返回内容的比较结果
return age == that.age && Objects.equals(name, that.name);
}
* Objects.equals()
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
* Objects.equals()容忍空指针
① 时间原点
格林威治:1970-01-01 00:00:00
北京:1970-01-01 08:00:00
② Date 类
Date 类的大部分方法都已经过时,在 jdk1.1 以后由 Carendar 类取代
③ 构造方法
* public Date()
分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
* public Date(long date)
分配Date对象并初始化此对象,以表示自从原点以来经过的毫秒数。
④ getTime()
* 把日期对象转换成对应的时间毫秒值。
⑤ 示例
import java.util.Date;
public class DemoDate {
public static void main(String[] args) {
Date date1 = new Date(1000 * 60 * 2); //Thu Jan 01 08:02:00 CST 1970
Date date2 = new Date(0); //Thu Jan 01 08:00:00 CST 1970
//无参构造。表示当前时间L
Date date3 = new Date(); //Wed May 29 13:41:42 CST 2019
//将日期对象转为毫秒值
long m = date3.getTime(); //1559108502853
System.out.println(date1);
System.out.println(date2);
System.out.println(date3);
}
}
① DateFormat 介绍
* DateFormat 是一个抽象类,不能直接 new 对象,需要使用子类
② SimpleDateFormat
* 格式
//用给定的模式和默认语言环境的日期格式符号创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
* 规则
y ---> 年
M ---> 月
d ---> 日
H ---> 时
m ---> 分
s ---> 秒
* 方法
format()
格式化,按照指定的格式,从Date对象转换为String对象。
parse()
解析,按照指定的格式,从String对象转换为Date对象。
③ 示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DemoDateFormat {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入出生日期(格式:xxxx-xx-xx xx:xx:xx)");
String s = sc.nextLine();
//日期对象
Date date = new Date();
//格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化当前日期
String format = sdf.format(date);
System.out.println(format);
//解析传入日期
Date parse = sdf.parse(s);
//计算出生毫秒数
long l = date.getTime() - parse.getTime();
//输出毫秒
System.out.println(l);
//输出年龄
System.out.println(l / 1000 / 60 / 60 / 24 / 30 / 12);
}
}
① Calendar 类为抽象类,提供了 getIntence() 获取 Calendar 类的子类对象。
② 常用方法
* get(int field)
返回给定日历字段的值。
* set(int field, int value)
将给定的日历字段设置为给定值。
* add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
* getTime()
返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
③ 成员常量
YEAR 年
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE 分
SECOND 秒
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)
④ 示例
import java.util.Calendar;
public class DemoCalendar {
public static void main(String[] args) {
//创建日历对象
Calendar c = Calendar.getInstance();
//这是时间
c.set(2019,5,20);
//西方月份是:0 - 11 , 每周第一天是周日
c.add(Calendar.MONTH,1);
//获取当前时间月份并打印
System.out.println(c.get(Calendar.MONTH));
}
}
① currentTimeMillis()
获取系统时间与时间原点之间的毫秒插值。
② arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将数组中指定的数据拷贝到另一个数组中。
* 参数
src 源数组
srcPos 源数组起始位置
dest 目标数组
destPos 目标数组起始位置
length 拷贝长度
① 它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。
StringBuilder会自动维护数组的扩容。(默认16字符空间,超过自动扩充)
② 构造方法
* public StringBuilder()
构造一个空的StringBuilder容器。
* public StringBuilder(String str)
构造一个StringBuilder容器,并将字符串添加进去。
③ 常用方法
* append(String str)
添加任意类型数据的字符串形式,并返回当前对象自身。
* toString()
将当前StringBuilder对象转换为String对象。
④ 示例
public class DemoStringBuilder {
public static void main(String[] args) {
//使用有参构造创建 StringBuilder 对象
StringBuilder sb = new StringBuilder("中国");
//将字符追加到sb后
sb.append("©");
sb.append(2019);
//将StringBuilder转为字符串
String s = sb.toString();
System.out.println(s);
}
}
* 【装箱】基本数值 ---> 包装对象
//使用构造函数函数
Integer i1 = new Integer(int i);
//使用包装类中的valueOf方法
Integer i2 = Integer.valueOf(int i);
* 【拆箱】包装对象 ---> 基本数值
int num = i.intValue();
* 从 JDK 1.5 开始,基本类型与包装类的装箱、拆箱动作可以自动完成。
Integer i = 1;//自动装箱 相当于 Integer i = Integer.valueOf(1);
int a = i + 2;//自动拆箱 相当于 i.intValue() + 2;
基本数据类型对应的包装类在 Java_06 中有说明
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型
* 【Byte】 parseByte(String s)
将字符串参数转换为对应的 byte 基本类型。
* 【Short】parseShort(String s)
将字符串参数转换为对应的 short 基本类型。
* 【Integer】parseInt(String s)
将字符串参数转换为对应的 int 基本类型。
* 【Long】parseLong(String s)
将字符串参数转换为对应的 long 基本类型。
* 【Float】parseFloat(String s)
将字符串参数转换为对应的 float 基本类型。
* 【Double】parseDouble(String s)
将字符串参数转换为对应的 double 基本类型。
* 【Boolean】parseBoolean(String s)
将字符串参数转换为对应的 boolean 基本类型。
public class DemoParse {
public static void main(String[] args) {
int num = Integer.parseInt("100");
}
}