关于API的学习、 Object类、和时间相关类的课程笔记

指针JAVA培训day_13

API的学习:

​ 构造方法
​ 常用方法:
​ 什么时候调用
​ 跟什么有关
​ 用来做什么的
​ 得到的是什么

java.lang - 基础包 String StirngBuilder 包装类 线程
java.io - Input/Output
java.util - 工具包 Date Collection Map
java.text - 格式化 DateFormat

java.sql - 跟数据相关
java.net - 网络TCP/IP

类 Object

1.所有类的父类,所有类都默认继承object

也就意味着会默认继承object类中的所有方法

2.只有一个无参构造方法,并且没有静态常量

所有方法必须通过对象调用

3.object共有11个方法

Class<?> getClass()

a.通过对象的该方法,可以获取类的字节码对象

b.类加载的触发条件(使用类)

​ 1.实例化对象

​ 2.调用静态方法/静态变量

​ 3.使用子类,加载父类

​ 4.Class.forName(“全类名 ”) – jdbc

​ 5.对象.getClass()

protected Object clone()

a.克隆方式:

​ 深克隆:复制对象

​ 浅克隆:复制引用

b.调用:

​ 1.方法必须重写

​ 2.必须实现Cloneable接口,否则会抛出 CloneNotSupportedException----不支持克隆异常

c.注意:

​ 1.一般不会重写clone(),因为可以使用引用的赋值进行赋值

​ 2.Cloneable接口–

​ 是一个空接口,目的就是为了标记是可克隆的

protected void finalize()

a.内存溢出:在内存中没有储存的地方

b.内存泄漏:被无用的对象占用着空间

​ (一个对象分配内存空间后,在使用结束后没有及时释放,导致一直都在占用内存,没有及时清除,使得实际的可使用内存减少)

c.java存在垃圾回收机制 --gc

​ gc:定时清理内存中的垃圾

​ 1.垃圾:没有引用的对象,被定义成垃圾

​ 2.可以手动调用 system.gc

注意:java原则上是不存在内存溢出和泄露问题

String toString()

a.作用:将对象以字符串的形式输出

b.默认实现:getClass().getName() + “@” + Integer.toHexString(hashCode())
@前: 全类名 -> 包名 + 类名
@后: 16进制的地址值

c.方法的重写

​ 目的: 以自定义的方式展示对对象的显示

public boolean equals(Object obj)

a.作用:判断两个对象[this 和 obj]是否相等

b.Object中equals默认实现:

​ 是判断两个对象的地址值是否相等

​ 重写过后,判断两个对象的内容是否相等

c.重写过程:

​ 1.判断是不是同一种类型

​ 2.判断是不是同一个对象

​ 3.既不是同一个对象,也不是同一个类型的情况

public int hashCode()

–获取hash值 指的是内存地址值

public native int hashCode();
native:本地 -> 底层下是c++实现的代码

和时间相关的类

long可以表示时间:

  1. 获取方式:
    long time = System.currentTimeMillis();

    2.作用:

​ a.可以用来做短时间(7天以内)内的计算

​ b.代码效率的对比

3.注意:

​ 在进行计算时,需要注意整数类型的默认值是int类型

​ 如果超出了int的范围,会变成一个负数

​ 所以需要在计算之前先标记为long类型 l/L标记

Date类:

1.作用:用来显示时间

2.创建:a. new Date() -> 获取当前系统时间
b. new Date(long) -> 获得任意时间段的时间

3.常用API
setTime() - 设置时间
getTime() - 获得时间

​ boolean after(Date when)
​ 测试此日期是否在指定日期之后。
​ boolean before(Date when)
​ 测试此日期是否在指定日期之前。

4.和long之间的转换
long -> Date
a. new Date(long)
b. date.setTime(long)
Date -> long
date.getTime()

Date date = new Date();//获取当前时间
System.out.println(date);
Date date1 = new Date(0);//获取格林威治时间
System.out.println(date1);//Thu Jan 01 08:00:00 CST 1970
//设置时间,获取long类型的当前时间+一天后的时间
date.setTime(date.getTime()+1l*24*60*60*1000);
System.out.println(date);

类Calendar

1.作用:专用用来做时间的推算或者时间的跳转
2.特点:
a.Calendar是abstract修饰的类,所以不能new对象
3.创建方式
a.通过Calendar的实现类来调用
b.通过静态方法调用
Calendar.getInstance()

4.常用API:
Calendar 和 Date的转换
Date getTime() -> Calendar 转换成 Date
void setTime(Date) -> Date 转换成 Calendar

calendar 和 long的转换
getTimeInMillis()
setTimeInMillis()

​ get() - 获取
​ set(字段,int value) - 设置,时间的跳转
​ add(字段,int amount) - 时间的推算

Calendar calendar = Calendar.getInstance();
System.out.println("生产日期:"+calendar.getTime());
calendar.add(Calendar.DAY_OF_YEAR,48);
System.out.println("过期:"+calendar.getTime());
calendar.add(Calendar.DAY_OF_YEAR,-7);

calendar.set(Calendar.DAY_OF_WEEK,5);
System.out.println("促销日:"+calendar.getTime());

java.text

SimpleDateFormat类:
  1.创建
  	new SimpleDateFormat("yyyy-MM-dd")
  2.常用API:
  	Date parse(String text) ->字符串和Date之间的转换
 	format(Date date) -> Date按照指定格式输出
//格式化
SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String format = time.format(date);
System.out.println(format);

String str ="2021-07-21";
Date parse = time.parse(str);
System.out.println(parse);
上一篇:日历的设定(Calendar)


下一篇:Java基础-日期