Object类

Object类

Object类的概述:

java.lang.Object类是java语言中的根类,及所有的父类,在对象的实例化的时候,最终找到的父类是Object类.

如果一个类没有☞名父类,那么默认的就是Object类.

 

1 public class MyClass extends Object{
2   //代码块
3 }

 

根据JDK源代码及Object类的API文档,Object类有11个方法.

- public String toString():返回该对象的字符串表示。
- public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

 

toString方法:

方法摘要:

 

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

由于toString方法返回的结果是内存地址,而在开发中,
经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

 

覆盖重写:

代码演示:

 1 public class Person {  
 2     private String name;
 3     private int age;
 4 
 5     @Override
 6     public String toString() {
 7         return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
 8     }
 9 
10     // 省略构造器与Getter Setter
11 }

equals方法:

方法摘要:

 

默认地址比较:
如果没有覆盖重写equals方法,那么Object类默认进行==运算符的对象地址值比较,
只要不是同一个对象,结果必然为false。 对象内容比较: 如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,
则可以覆盖重写equals方法。

 

 对象内容比较演示代码:

 1 import java.util.Objects;
 2 
 3 public class Person {    
 4     private String name;
 5     private int age;
 6     
 7     @Override
 8     public boolean equals(Object o) {
 9         // 如果对象地址一样,则认为相同
10         if (this == o)
11             return true;
12         // 如果参数为空,或者类型信息不一样,则认为不同
13         if (o == null || getClass() != o.getClass())
14             return false;
15         // 转换为当前类型
16         Person person = (Person) o;
17         // 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
18         return age == person.age && Objects.equals(name, person.name);
19     }
20 }

 

Objects类:

概述:

 

在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,
这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),
用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。 在比较两个对象的时候,Object的equals方法容易抛出空指针异常,
而Objects类中的equals方法就优化了这个问题。方法如下: - public static boolean equals(Object a, Object b):判断两个对象是否相等

 

 代码演示:

1 public static boolean equals(Object a, Object b) {  
2     return (a == b) || (a != null && a.equals(b));  
3 }

 

Date类:

概述:java.util.Date类 表示特定的瞬间,精确到毫秒。

- public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
- public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间
(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。 tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。 简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。例如:

 代码演示:

 1 package com.heima.Date;
 2 
 3 import java.util.Date;
 4 
 5 //Date
 6 public class Dmo01 {
 7     public static void main(String[] args) {
 8         //创建日期的对象
 9         System.out.println(new Date());
10         //创建日期对象,把当前的毫秒值转换成对象。
11         System.out.println(new Date(0L));
12     }
13 }
14 /*
15 Mon Apr 01 16:46:03 CST 2019
16 Thu Jan 01 08:00:00 CST 1970
17  */

 

tips:在使用println方法时,会自动调用Date类中的toString方法。Date类对Object类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。

DateFormat类:

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

格式化:按照指定的格式,从Date对象转换为String对象

解析:按照指定的格式,从String对象转换为Date对象。

构造方法:

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。
这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为: - public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造
SimpleDateFormat。 参数pattern是一个字符串,代表日期时间的自定义格式。

 格式规则:

代码演示:

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。

  • public Date parse(String source):将字符串解析为Date对象。

创建SimpleDateFormat对象的代码如:

 1 package com.heima.Date;
 2 //format方法
 3 import java.text.DateFormat;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 public class Demo02 {
 8     public static void main(String[] args) {
 9         //创建日期对象
10         Date date = new Date();
11         //在创建日期格式化对象,在获取格式化对象时间可以指定风格
12         DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//public String format(Date date):将Date对象格式化为字符串。
13 String str=simpleDateFormat.format(date); 14 System.out.println(str); 15 } 16 }

 

parse方法使用:

 1 public class Demo02 {
 2     public static void main(String[] args) throws ParseException {
 3         //在创建日期格式化对象,在获取格式化对象时间可以指定风格
 4         DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 5         //public Date parse(String source):将字符串解析为Date对象。
 6         String str="2019-04-01 16:56:52";
 7         Date date=simpleDateFormat.parse(str);//抛出异常
 8         System.out.println(date);//Mon Apr 01 16:56:52 CST 2019
 9     }
10 }

 练习:

题目:书写一个人出生了多少天.

思路分析:

1.获取当前日期和毫秒

2.获取自己出生的日期和毫秒

3.两个时间相减

4.获取相减后的时间

代码演示:

 1 package com.heima.Date;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 import java.util.Scanner;
 6 
 7 public class Demo03 {
 8     public static void main(String[] args) throws Exception{
 9         //设置日期格式
10         System.out.println("请输入出生日期 格式 YYYY-mm-dd:");
11         //获取出生日期
12         Scanner scanner = new Scanner(System.in);
13         String s = scanner.nextLine();
14         //创建SimpleDateFormat对象,写日期模式
15         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-mm-dd");
16         //将字符串转换成日期对象调用parse方法
17         Date b=simpleDateFormat.parse(s);
18         //获取今天的日期对象
19         Date c = new Date();
20         //将日期转换成毫秒
21         long time = b.getTime();
22         long time1 = c.getTime();
23         long a= time1-time;
24         if(a<=0){
25             System.out.println("你还没有出生啊.");
26         }else {
27             System.out.println(a/1000/60/60/24);
28         }
29 
30     }
31 }

 

Calendar类:

概念:

 

JAVA.util.Calendar是日历类,在Date后出现,替换掉许多Date的方法,该类将所有可能用到的时间信息封装成,

成员方法,方便获取.

获取方式:

 

Calendar静态方法
Calendar为抽象方式.Calendar类在创建对象时候并非直接创建,而是通过静态方法创建返回子类如下.
- public static Calendar getInstance():使用默认时区和语言环境获得一个日历

 

 代码演示:

1 import java.util.Calendar;
2 
3 public class Dome01 {
4     public static void main(String[] args) {
//创建Calendar静态方法
5 Calendar cal = Calendar.getInstance(); 6 } 7 }

 

 

常用方法:

根据Calendar类的API文档,常用方法有:

- public int get(int field):返回给定日历字段的值。
- public void set(int field, int value):将给定的日历字段设置为给定值。
- public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

Calendar类中提供很多成员常量,代表给定的日历字段:

 Calendar类提供的成员常量:

get/set方法

get方法用来获取指定字段的值,set方法用来设置指定的值:

 1 package com.heima.Date;
 2 import java.util.Calendar;
 3 public class Demo04 {
 4     public static void main(String[] args) {
 5         //创建Calendar对象
 6         Calendar instance = Calendar.getInstance();
 7         //设置所需要获取的年
 8         instance.set(Calendar.YEAR,2020);
 9         //获取年
10         int year=instance.get(Calendar.YEAR);
11         //设置月
12         int monday= instance.get(Calendar.MONDAY)+1;
13         //设置日
14         int dayOfMoth=instance.get(Calendar.DAY_OF_MONTH);
15         System.out.print( + year+"年" + monday + "月" + dayOfMoth + "日");
16     }
17 }

 

getTime方法:

getTime方法获取的并不是毫秒值.而是拿到Date对象.

System类:

 

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

- public static long currentTimeMillis():返回以毫秒为单位的当前时间。
- public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。

 

 

StringBuilder类:

拼接类:

构造方法:

 

- public StringBuilder():构造一个空的StringBuilder容器。
- public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。

 

 

 

包装类:

 

 

装箱与拆箱

 

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

 

  • 装箱:从基本类型转换为对应的包装类对象。

  • 拆箱:从包装类对象转换为对应的基本类型。

 

用Integer与 int为例:(看懂代码即可)

 

基本数值---->包装对象

 

posted on 2019-04-01 17:10  风一般的男子·小亮  阅读(181)  评论(0编辑  收藏  举报

导航