一、toString方法
1object类是类层次结构的根类(最顶层类),每个类都使用obiect作为其超类(父类)
2因为所有类都是属于Object类的,所以该类所新建的对象可以直接使用对象名.toString来获取该
对象的地址值(直接打印对象的名字也是包名+获取地址值)
3toString方法默认打印的是对象的地址值,因为是父类方法,所以也可以覆盖重写。
例 1:Random r=new Random sout(r)打印出来是地址值 说明没有覆盖重写toString方法
2:String s=“bed” sout(s)打印出来的不是地址值,因为String是属于Objec的子类的,
所以java自动将String类对toString这个方法进行了重写
3:也可以将toString方法改写成Person{name=“+name+”,age=“+age+”}来获得成员变量
的属性
二、equals方法
1代码:public boolean equals(Object obj){return(this==obj)}本质上就是“==”。
补充:基本数据类型比较数值,引用数据类型比较地址值,字符串比较内容
2如果其中一个对象的内容为空null 使用Objects.equals(对象a ,对象b)也可以进行比较,
而不会抛出空指针异常(Objects是对象工具类)
3对equals方法进行覆盖重写 代码如图 注意,新建对象.各种方法,实际上使用的都是
父类Objects的方法,也就是一个多态,而多态是无法查看下面子类的属性和方法的,
所以具体实现代码如下
@Override//toString的方法重写
public String toString() {
return "Person{name="+name+",age="+age+"}";
}
@Override
public boolean equals(Object obj) {//对equals方法重写 使之实现比较两个不同子类对象的的属性
if(obj instanceof Person){//判定参与比较的对象是不是来自Person类
//因为要比较的是两个Person类的属性,而对象名.equals是一个多态方法,
// 所以要对Objects的对象方法向下转换
Person p=(Person)obj;//将obj对象向下转型成Person类
boolean b=this.name.equals(p.name)&&this.age==p.age;//this就是小括号外对象
return b;
}
return false;
}
三、时间,日期的Date类(util)
1System.currentTimeMillis():把当前日期时间,到1970年1月1日的时间长度,以毫秒为单位
显示出来,其数据类型为long型
2关于Date类的方法举例:
1:Date date=new Date();无参构造:获取当前系统日期时间
2:Date date=new Date(xxL);输入一个毫秒值,转换成对应日期(注意是Long类型)
3:成员方法date.getTime: 将当前日期转换为毫秒
3DateFormat和SimpleDateFormat:
1从属关系:Format--DateFormat(抽象类)--SimpleDateFormat
2Dateformat抽象类的两个成员方法作用:
1格式化String format(Date date):将日期转换成字符串
2解析Date parse(String source):将文本变回date日期
3SimpleDateFormat的有参构造方法 SimpleDateFormat(String pattern),将指定格式的
参数(y-m-d-h-m-s)写入然后做好接收或输出准备,里面的横杠可换,字母不可换
ackage com.bed.demo01.object;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class Date1 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat time=new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分ss秒");
Date date=new Date();
String shijian=time.format(date);
System.out.println(shijian);
System.out.println(date);
SimpleDateFormat time2=new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分ss秒");
Date date2=time2.parse("2021年07月28日 18小时49分04秒");
System.out.println(date2);
}
}
案例1计算你已经活了多少天
package com.bed.demo01.object;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class lianxi {
public static void main(String[] args) throws ParseException {
Scanner sc=new Scanner(System.in);
System.out.println("请输入您的出生日期,格式为yyyy年MM月dd日");
String birthday=sc.next();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");//匹配时间的接收格式
Date birthtime=sdf.parse(birthday);//将匹配来的String格式的日期转换为date格式
long birthhaomiao=birthtime.getTime();//将date格式出生日期转换为毫秒
long nowhaomiao=new Date().getTime();//将date当前日期转换为毫秒
long shijiancha=nowhaomiao-birthhaomiao;
long tianshu=shijiancha/1000/60/60/24;
System.out.println("目前生存"+tianshu+"天");
}
}
小总结:SimpleDateFormat功能就是准备或发送时间格式的设定装置,文本和标准date格式之间的相互转换,而date成员方法提供的是获取时间,毫秒与date格式的转换
本文详细介绍了Java中Object类的toString方法,包括默认行为和如何覆盖重写以显示对象属性。此外,还讲解了equals方法的本质及覆盖重写的注意事项。文章进一步探讨了Date类,包括获取当前时间、毫秒转换以及DateFormat和SimpleDateFormat在日期格式化中的应用。通过实例展示了如何计算已活天数,总结了SimpleDateFormat在文本和日期转换中的作用。
402

被折叠的 条评论
为什么被折叠?



