Java基础Date类和对象克隆4月打卡day18

举报
java厂长 发表于 2022/04/13 09:17:52 2022/04/13
【摘要】 Java基础Date类和对象克隆4月打卡day18关于作者作者介绍🍓 博客主页:作者主页🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆。🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻。1、Date类日期数据类型一定要重视,所有的开发必定要有日期。1.1 日期处理类—Dat...

Java基础Date类和对象克隆4月打卡day18

关于作者

  • 作者介绍


🍓 博客主页:作者主页

🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆。

🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻。

1、Date类

日期数据类型一定要重视,所有的开发必定要有日期。

1.1 日期处理类—Date类

java.util.data类是在整个程序处理之中唯一可以取得日期当前日期实例化对象的操作方法,也就是说我们要取出当前日期输出Date类对象即可。

package com.day13.demo;
​
import java.util.Date;
​
public class DateDemo1 {
    public static void main(String[] args) {
        Date date = new Date();
        //Tue Aug 17 17:01:50 CST 2021
        System.out.println(date);
    }
}

在Date类中最需要关心的一个核心问题:long可以描述日期,看了一通过Date类中提供的方法来进行观察。

方法名称 类型 描述
public Date(long date) 普通 将long类型变为Date类型数据
public long getTime() 普通 将Date类型变为long类型数据

观察转化

package com.day13.demo;
​
import java.util.Date;
​
public class DateDemo1 {
    public static void main(String[] args) {
        long num = System.currentTimeMillis();
        System.out.println(new Date(num));
        System.out.println(new Date(num).getTime());
    }
}

这中简单的转换在以后的程序开发经常会使用。

1.2 日期格式化—SimpleDateFormat类(核心)

虽然Date可以取得当前的日期时间,但是取出的结构不是我们所喜欢的格式,这时候就需要我们进行格式的转化,使用的是java.text包

image-20210817171959845

但是日期格式里面需要设置一些日期标记:年(YYYY)、月(MM)、日(dd)、时(HH)、分(mm)、秒(ss)、毫秒(SS);

实现日期格式化处理(日期格式化之后是字符串)

package com.day13.demo;
​
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class DateDemo1 {
    public static void main(String[] args) {
        Date date = new Date();
        String str = "YYYY-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(str);
        String dateFromat = sdf.format(date);
        System.out.println(dateFromat);
    }
}

将字符串变为Date类型

package com.day13.demo;
​
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class DateDemo2 {
    public static void main(String[] args) throws ParseException{
        Date date = new Date();
        System.out.println(date);
        String str = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(str);
        //将Date类型转化为字符串类型
        String newdateStirng = sdf.format(date);
        System.out.println(newdateStirng);
        //将字符串转化为Date类型
        Date newdate = sdf.parse(newdateStirng);
        System.out.println(newdate);
    }
}

2、对象克隆

克隆就是对象复制的一个概念,不过这种概念一般使用的比较少,因为很少有人去复制已经存在的对象。Object类本身就支持对象克隆方法。可以发现protected Object clone() throws CloneNotSupportedException;我们要想实现克隆,那么我们并不是所有类的对象可以随便克隆,需要被克隆的对象所在类一定要实现Cloneable接口,而最关键的是该接口并没有任何的抽象方法,所以该接口只是一个标识接口,表示一种能力。

对象克隆实现

package com.day13.demo;
class Per implements Cloneable{//必须实现此接口
    private String name;
    private int age;
    public Per(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Per [name=" + name + ", age=" + age + "]";
    }
    @Override
    //覆写权限扩大  protected 扩大到 public
    public Object clone() throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        return super.clone();//父类负责克隆
    }
}
public class CloneDemo {
    public static void main(String[] args) throws Exception{
         Per perA = new Per("kaco",12);
         //perA.clone();不能在这写的原因是因为此方法是protected权限 只能在不同包的子类中实现此方法
         Per perB = (Per) perA.clone();
         perB.setAge(100);
         System.out.println(perA);
         System.out.println(perB);
    }
}

意义不大,需要清楚表示接口的作用,表示的是一个能力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。