![在这里插入图片描述](https://img-blog.csdnimg.cn/20200520164948189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW94aWFveGlhbmcx,size_16,color_FFFFFF,t_70)
Object类
- 概念:
java.lang.Object类是java语言中的根类,即所有类的父类。其中所有的方法在子类中都能使用。
(小补充:lang包下的类,无需导包,可以直接使用)。
- Object类有哪些方法:
(API文档下载:链接:https://pan.baidu.com/s/1-DWsOTEFt6mA5C77aDSWrg
提取码:njig)
(1)toString()方法:返回该对象的字符串表示。
(toString方法返回的结果是内存地址。)
(如何重写toString方法:idea–>code–>Generate。或者使用快捷键:alt+insert,点击toString)
Public String toString()
(2)equals(Object obj)方法:指示其他对象是否与此对象“相等”。
(指的是:比较两个对象的内容值是否一样。)
(重写equals和hashcode方法的方式同上)
public boolean equals(Object obj)
(3)hashCode()方法:返回该对象的哈希码值。
public int hashCode()
(比较的是两个对象的地址值)
(4)finalize()方法:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
protected void finalize()
(5)notify()方法:唤醒在此对象监视器上等待的单个线程。
public final void notify()
(6)notifyAll()方法:唤醒在此对象监视器上等待的所有线程。
public final void notifyAll()
(7)getClass()方法:返回此Object的运行时类。
public final Class<?> getClass()
(8)clone()方法:创建并返回此对象的一个副本。
protected Object clone()
(9) wait()方法: 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
public final void wait()
(10)wait(Long timeout)方法: 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
public final void wait(Long timeout)
(11)wait(Long timeout,int nanos)方法: 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
public final void wait(Long timeout,int nanos)
- equals与hashcode方法两者的区别和使用:
(1)如果两个对象相同(equals方法返回true),那么他们的hashCode一定相同;
(2)如果两个对象的hashCode相同,则他们的equals不一定相同。
- ==与equals的区别:
(1)==:既能比较基本数据类型,也能比较引用数据类型。
比较基本数据类型:比较它们的内容值。
比较引用数据类型:比较它们的地址值。
(2)equals:只能比较引用数据类型。比较它们的内容值。
- final、finally、finalize三者的区别:
(1)final:可以作用在类、方法、变量上面;
作用在类上时不能被继承;作用在方法上面时不能被重写;作用在变量上面不能被改变。
(2)finally:与try…catch作用在一起,finally里面的代码总是会被执行。例如:流的关闭等。
(3)finalize:是object的方法,可以通过覆盖这个方法,来实现回收前的资源清理工作。
相关流程:
①、java虚拟机通过“根搜索算法”,判断对象是否处于可回收流程状态;会判断该对象是否重写了object类的finalize方法,若没重写,则直接回收。
②、如果重写了finalize方法,未执行该方法;则把该对象放入F-Queue队列。另一个线程会定时遍历F-Queue队列,并执行该队列中的各个对象的finalize方法。
③、finalize方法执行完毕后,GC会再次判断该对象是否可被回收。如果可以,则进行回收;如果该对象上有强引用,则该对象“复活”,处于“不可回收状态”。
Date类
(使用日期类输出当前日期)
1、概述:
(1)java.util.Date,是util包下的类。表示特定的瞬间,精确到毫秒。
(2)构造函数:
①、无参构造:public Date():自动设置当前系统时间的毫秒时刻。
②、有参构造:public Date(long date):可以自定义毫秒时刻。
2、我们处于东八区:
基准时间为1970年1月1日8时0分0秒。
3、常用方法:
public long getTime():把日期对象转换成对应的时间毫秒值。
DateFormat类
(将日期格式化为字符串;将字符串转化为日期;)
1、概述:
(1)java.text.DateFormat是日期/时间格式化子类的抽象类。通过此类可以完成日期和文本之间的转换。
(2)格式化:按照指定的格式,从Date对象转换为String对象。
(3)解析:按照指定的格式,从String对象转换为Date对象。
2、构造方法:
(1)由于DateFormat是抽象类,不能直接使用。常用子类java.text.SimpleDateFormat。
(2)这个子类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
3、格式规则:
4、常用方法:
Calendar类
日历类
System类
数组复制方法;
获取当前毫秒时刻值;
StringBuilder类
1、String、StringBuilder、StringBuffer三者区别;
(1)String:对象内容不可改变。所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。(既耗时,又浪费空间)。线程安全。
(2)StringBuilder:可变字符序列。(默认16字符空间)。线程不安全。适用于单线程。
(3)StringBuffer:线程安全(对调用方法加入同步锁)。执行效率慢,适用于多线程。
2、StringBuilder可以解决的问题;
可以频繁操作字符串。
3、StringBuilder进行字符串拼接操作;
包装类
1、包装类和基本数据类型的区别:
(1)基本数据类型(4类8种):
int、byte、long、short、char、boolean、double、float。
(2)包装类:
Integer、Byte、Long、Short、Character、Boolean、Double、Float。
(3)区别:
基本数据类型是值的传递,包装类是对象的传递;
初始值不同:int初始值为,,integer的初始值为null;
基本数据类型不是对象,包装类是对象;
基本数据类型保存在栈中,包装类将对象放在堆中。
2、自动拆装箱概念:
(1)自动装箱:从基本数据类型转换为对应的包装类对象。
(2)自动拆箱:从包装类对象转换为对应的基本类型。
(3)例子:用int和Integer为例。
①、基本数据类型—>包装类:
Integer i = new Integer(4);//使用构造函数
Integer ii = Integer.valueOf(4);//使用valueOf方法
②、包装类---->基本数据类型:
int num = i.intValue();
(4)JDK5之后自动拆装箱。
3、基本数据类型与字符串之间的转换:
(1)基本数据类型转为String一共有3种方式。
①、基本数据类型直接与“”相连接;
②、toString方法;
③、valueOf方法。
(2)字符串转换为基本数据类型:
①、包装类.parseXxx方法。
②、xxxValue方法。