【Java】Object类、Objects类和日期类

1 Object类

Object类是所有类的父类,每个类都直接或间接的继承自该类

1.1 Object.toString()

作用:打印输出类信息
重写前:打印输出包名类名@地址值
重写后:打印输出属性值

1.2 Object.equals()

作用:比较两个对象
重写前:比较对象的地址值
重写后:比较对象的属性值

package ObjectDate;import java.util.Objects;public class ObjectTest {static class MyObject{String name;int id;public MyObject(String name, int id) {this.name = name;this.id = id;}@Overridepublic String toString() {return "MyObject{" +"name='" + name + '\'' +", id=" + id +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;MyObject myObject = (MyObject) o;return id == myObject.id &&Objects.equals(name, myObject.name);}}public static void main(String[] args) {//String类String a = "abc";String b = "abc";boolean result = a.equals(b);System.out.println(result);//trueSystem.out.println(a);//abc//因为String的源码中已经对equals和toString进行了重写//自定义类MyObject m1 = new MyObject("张三",1);MyObject m3 = new MyObject("张三",1);boolean result2 = m1.equals(m3);System.out.println(result2);//重写前 false;重写后trueSystem.out.println(m1.toString());//重写前:ObjectDate.ObjectTest$MyObject@4554617c;// 重写后:MyObject{name='张三', id=1}}
}

2 Objects类

jdk1.7后出现,提供静态方法操作对象,可以通过类直接调用方法。

public static void main(String[] args) {String a = "123";String c = null;boolean result = c.equals(a);//空指针异常boolean result = Objects.equals(a,c);//false//为了提高代码的健壮性 Objects提供了equals方法//Objects.equals的源码public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}
}

3 Date类

Date()空参数构造方法,Date(long L)长整型构造方法,getTime成员方法相当于System.currentTimeMillis()

import java.util.Date;public class DateTest {public static void main(String[] args) {//空参数构造方法Date d = new Date();System.out.println(d);//Wed Apr 01 09:32:04 CST 2020//Date类的成员方法long time = d.getTime();System.out.println(time);//毫秒值1585704724114System.out.println(System.currentTimeMillis());//同上//带Long参数的构造方法Date d2 = new Date(0L);System.out.println(d2);//Thu Jan 01 08:00:00 CST 1970}
}

4 DateFormat类&SimpleDateFormat类

所属java.text包,DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为毫秒数。

4.1 格式转换String format(Date date)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。参数: pattern - 描述日期和时间格式的模式抛出: NullPointerException - 如果给定的模式为 nullIllegalArgumentException - 如果给定的模式无效模式:y 年 M 月 d 日 H 时 m 分 s 秒"yyyy-MM-dd HH:mm:ss""yyyy年MM月dd日HH时mm分ss秒"
*/public class DateTest {public static void main(String[] args) throws ParseException {//构造特定格式 SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d = new Date();String text = s.format(d);System.out.println(d);//Wed Apr 01 09:48:17 CST 2100System.out.println(text);//2100-04-01 09:48:17

4.2 格式解析Date parse(String source)

//接上方//解析特定格式//parse抛出解析异常 字符串和构造方法中的模式不一样就会抛出//throw抛出 或者try catch处理Date d2 = s.parse("2100-04-01 09:48:17");System.out.println(d2);//Wed Apr 01 09:48:17 CST 2100}
}

4.3 应用示例

计算一个人出生了多少天:
步骤分析:
1. 获取输入的出生日期
2. 使用DateFormat的parse方法解析为Date格式
3. 调用getTime方法获得毫秒值
4. 获取当前日期的毫秒值
5. 计算两个日期的差值
6. 将毫秒值转化为天数并输出
输入日期格式:yyyy-MM-dd

public class DateTest {public static void main(String[] args) throws ParseException {//1.Scanner sc = new Scanner(System.in);System.out.println("按格式输入(yyyy-MM-dd):");String birthday = sc.next();//2.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(birthday);//3.long dateMs = date.getTime();//4.long nowMs = new Date().getTime();//匿名对象//5.long delta = nowMs - dateMs;//6.int day = (int) (delta/(1000*86400));System.out.println(day);}
}

5 Calendar类

Calendar类时抽象类,提供操作日历字段的方法,无法直接创建对象使用
通过调用静态方法getInstance获取Calendar子类对象,获取默认时区和语言环境的日历

5.1 常用方法

  1. int get(int filed):获取给定日历字段的值
  2. void set(int filed):将给定的日历字段设置为给定值
  3. abstract void add(int flied, int amount):根据日历规则,对给定的日历字段增加或减去指定时间量
  4. Date getTime():返回一个表示Calendar时间值的Date对象
/*
1. int get(int filed):获取给定日历字段的值
2. void set(int filed):将给定的日历字段设置为给定值
3. abstract void add(int flied, int amount):根据日历规则,对给定的日历字段增加或减去指定时间量
4. Date getTime():返回一个表示Calendar时间值的Date对象filed 是日历类的字段 可以使用Calendar的静态成员变量获取
YEAR MONTH DATE DAY_OF_MONTH HOUR MINUTE SECOND*/
public class DateTest {public static void main(String[] args){//getInstanceCalendar c = Calendar.getInstance();//get set addint month = c.get(Calendar.MONTH);System.out.println(month+1);//西方是0~11 东方+1int date = c.get(Calendar.DATE); //每月多少号int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(date);//1System.out.println(day);//1c.set(Calendar.YEAR,2100);c.set(8888,8,8);System.out.println(c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH));//8888-8c.add(Calendar.YEAR,10);System.out.println(c.get(Calendar.YEAR));//日历转换为日期Date time = c.getTime();System.out.println(time);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问题对语义相似度计算-参赛总结

时间段:2018.06.10~2018.07.20问题对语义相似度计算(从0到0.5) 短短一个多月的时间,我学到了很多很多东西,从一个呆头小白初长成人。首先,必须感谢我的导师能给我这个机会从头到尾完整地参加这次比赛&#…

后BERT时代:15个预训练模型对比分析与关键点探究

前言在小夕之前写过的《NLP的游戏规则从此改写?从word2vec, ELMo到BERT》一文中,介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里,模型预训练的方法又被Google、Facebook、微软、百度、OpenAI等极少数几个玩得…

技术论坛 | 10月22日在微软:“行业知识图谱+ ”论坛通知

大数据创新学习中心 《国务院新一代人工智能发展规划》的“跨媒体分析推理技术”强调“重点突破跨媒体统一表征、关联理解与知识挖掘、知识图谱构建与学习、知识演化与推理、智能描述与生成等技术”,为进一步了解知识图谱技术的应用场景,2017年10月22日在…

【Java】StringBuilder类、包装类

1 StringBuilder类 1.1 String的劣势 String类中字符串是常量,创建后不能更改 //底层是final修饰的数组 private final byte[] value;字符串相加,内存中会存在多个字符串,占用空间多,效率低下 1.2 StringBuilder的优势 Strin…

从贪心选择到探索决策:基于强化学习的多样性排序

本文主要介绍发表在SIGIR2018上的论文From Greedy Selection to Exploratory Decision-Making: Diverse Ranking with Policy-Value Networks​www.bigdatalab.ac.cn这篇论文利用强化学习来解决多样性排序问题,整体思路和AlphaGo类似。Motivation在信息检索领域一个…

对话系统聊天机器人的设计艺术(上)

前言关于本文的阅读方式:这不是一篇学术综述,也不是单纯的科普文,而是试图从目标出发来渐进式的思考对话系统的设计,顺便科普。因此本文不适合跳读,也不适合5分钟式浏览,而是适合在夜深人静的时候一个人...…

鲍捷 | 知识表示——面向实战的介绍

本文转载自文因互联 2016 年 6 月份组织的第一期北京知识图谱学习小组 Wiki。 知识表示(Knowledge Representation,KR,也译为知识表现)是如何将结构化数据组织,以便于机器处理和人的理解的方法。从结构推导出新的结构&…

【Java】Collection集合和泛型

学习目标:会存取,掌握特性 学习方式:学习顶层接口/抽象类的共性方法,使用底层的子类创建对象使用 1 集合框架 集合类的继承体系: Collection接口: 1) List接口:有序、允许重复、有索引 1.1) Ar…

]搜索引擎的文档相关性计算和检索模型(BM25/TF-IDF)

搜索引擎的检索模型-查询与文档的相关度计算1. 检索模型概述搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度。实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网…

对话系统(任务型、检索式、生成式对话论文与工具串讲)

Motivation 对话是一个很大的概念,有非常非常多的子问题,刚入坑的小伙伴很可能迷失在对话的一小块区域里无法自拔,本文就是为解决这一类问题的。希望读者在看完本文后,可以理清楚对话的每个概念为什么而存在,以及它在整…

综述 | 知识图谱向量化表示

本文作者:窦洪健,2016级研究生,目前研究方向为推荐系统、文本生成,来自中国人民大学大数据管理与分析方法研究北京市重点实验室。 本文收录于RUC AI Box专栏,为该专栏特供稿件(https://zhuanlan.zhihu.com/…

【LeetCode】4月2日打卡-Day18-矩阵操作

题1 生命游戏 描述 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即…

强化学习扫盲贴:从Q-learning到DQN

本文转载自知乎专栏「机器学习笔记」,原文作者「余帅」,链接https://zhuanlan.zhihu.com/p/358829371 本文学习目标1. 复习Q-Learning;2. 理解什么是值函数近似(Function Approximation);3. 理解什么是DQN&…

【LeetCode】4月1日打卡-Day17-括号匹配/嵌套深度

题1 有效括号的嵌套深度 题解 要求划分出使得最大嵌套深度最小的分组,我们首先得知道如何计算嵌套深度。我们可以通过栈实现括号匹配来计算: 维护一个栈 s,从左至右遍历括号字符串中的每一个字符: 如果当前字符是 (,…

肖仰华 | 基于知识图谱的可解释人工智能:机遇与挑战

本文转载自公众号知识工场,整理自 2017 年 10 月 13 日肖仰华教授在 CIIS2017 中国智能产业高峰论坛上所做的报告。 肖仰华:很高兴有机会跟大家一起分享《基于知识图谱的可解释人工智能:机遇与挑战》。 刚才刘总的报告中提到了机器和人类将来…

对话系统的设计艺术(完结)

Motivation对话是一个很大的概念,有非常非常多的子问题,刚入坑的小伙伴很可能迷失在对话的一小块区域里无法自拔,本文就是为解决这一类问题的。希望读者在看完本文后,可以理清楚对话的每个概念为什么而存在,以及它在整…

2018届校招面经精选

https://www.zhihu.com/question/23259302 牛客网​已认证的官方帐号819 人赞同了该回答最好的办法就是看看别人是怎么准备的,通过别人的面经来反思自己如何准备。针对应届生校招面试 “机器学习” 相关岗位的情况,牛妹为大家整理了一批面经&#xff0c…

【Java】列表、集合、哈希表和可变参数

1 List 1.1 List的特点 List接口继承自Collection接口List是有序集合,存取顺序一致允许存储重复元素 1.2 List的特有方法【带索引】 public void add(int index, E element);public E get(int index)public E remove(int index):返回移除元素public …

白硕 | 知识图谱,就是场景的骨架和灵魂

本文转载自公众号恒生技术之眼 知识图谱,目前已在全世界得到了重视和应用,成为当下人工智能热的一个重要组成部分。它究竟是怎样的一种技术?它的应用场景在哪里?未来国内企业该如何发展?让我们一起来聊聊。 从知识图谱…