java高级 object类的toString方法

本文详细介绍了Java中Object类的toString方法,包括默认行为和如何覆盖重写以显示对象属性。此外,还讲解了equals方法的本质及覆盖重写的注意事项。文章进一步探讨了Date类,包括获取当前时间、毫秒转换以及DateFormat和SimpleDateFormat在日期格式化中的应用。通过实例展示了如何计算已活天数,总结了SimpleDateFormat在文本和日期转换中的作用。

一、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格式的转换

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值