Object类:
跟线程相关:notify / notifyAll / wait*3
1)getClass():获得泪的字节码对象
类加载:
使用类的情况:
new 对象 -> 实例化
调用静态变量 / 静态方法
调用子类之前 , 必须先加载父类
xx.class
2)clone():
深克隆:复制对象
浅克隆:复制引用
3)finalize():
GC - 垃圾回收机制
内存溢出:100%
内存泄漏:100% 实际使用内存50%
4)toString():将对象以字符串的形式输出
默认实现:
getClass().getName() + @ + Integer.toHexString(hashCode())
@前:表示的是完成的类名
@后:表示16进制的hashCode值
如果想要自定义格式输出,那么就重写toString()
5)equals()
作用:判断两个对象[this 和 obj]是否相等
Object中默认实现方法:
this == obj -> 判断两个地址值相不相等
方法重写:
目的:自定义比较规则
步骤:
1、判断是不是同一个对象
2、判断是不是同一个类型
3、既不是同一个对象,也不是同一个类型
Object object(工具类) Arrays
Collections
6)hashCode()
作用:生成对象的hash值
跟内存中的存储位置相关
public native int hashCode();
hashCode()不是抽象方法,但是也没有方法体,就是因为他是本地方法,这是跟底层相关的方法,底层是由C实现
native:本地的
java Native Interface
java.lang -> String 包装类 线程
java.util -> Arrays Collection Map
java.io -> Input Output
java.text -> 格式化 DateFormat
java.net -> 网络编程 TCP / IP
java.sql -> 数据库
跟时间相关的类:
long类型:
a、获得当前系统时间
long System.currentTimeMills()
b、作用:通常用来做计算,计算效率(7天以内的计算)
c、注意:
在进行计算时,需要注意整数类型的默认值是int类型
如果超出了int类型的范围,就是溢出了,会变成负数所以需要在计算之前先标记好是long类型,加L/l
Date类:
a、作用:专门用来做时间的显示
b、创建 - 构造方法
1)得到当前系统时间
new Date()
2)得到long类型的时间
new Date(long)
c、常用API
date1.after(date2)
date1.before(date2)
通过Date获得long(Date -> long)
date.getTime()
使用long类型的时间做计算,然后输出Date类型(long -> Date)
date.setTime()
Calender - 万年历
a、作用:专门用来做时间推算或者是时间跳转
b、特点:是abstract修饰的类,是一个抽象类,所以不能直接new对象,只能创建子类或者调用类的静态方法
c、创建
Calendar.
get() - 获取时间
set() - 时间的跳转
add() - 时间的推算
Calendar 和 Date 之间的转换
Calendar -> Date
Date getTime()
Date -> Calendar
void setTime()
Calendar 和 long之间的转换
getTimeINMillis()
setTimeINMillis()
Date 和 long 之间的转换
java.text - 格式化
SimpleDateFormat
常用API
a、使用指定格式将时间格式化
String format(date)
b、将字符串转变成时间
Date parse(“String”)
c、注意:
要求必须符合SimpleDateFormat的格式否则就会出现ParseException
复习:
多态:
继承/重写/向上造型
向上造型: 父类型的引用 指向 子类型对象
Fu fu = new Zi();
编译时类型:看左边类型,决定对象能调用那些属性和方法
运行时类型:看右边类型,决定对象最终能调用的方法是那个
向下转型:
类型转换异常:ClassCastException
instanceof
Dog
Cat
内部类:
成员内部类
静态内部类
局部内部类(匿名内部类)
匿名内部类:只能使用一次的类
匿名对象:只能调用一次方法
API(application progamming Interface):应用程序接口
api -> 帮助文档
String java.lang.String
Math java.lang.Math
Scanner
System
常用类:Object
1.是所有类的基类/父类,所以类都默认继承Object
2.11方法
1)Class getClass()
(1)作用: 对象通过该方法,可以获得对象对应的类的字节码对象
xx.java -> xx.class -> JVM
类加载 - 方法区 - 字节码对象
加载:类只加载一次,所以方法区中类信息只有一个,所以字节码对象也只有一个
加载的触发条件(使用类) - 工具:类加载器(ClassLoader)
I: 实例化对象 new
II: 静态方法/静态变量
III:使用子类,父类必须先加载
IV: Class.forName("java.lang.String") --手动加载指定的类
V: String.class -> 获得类的字节码对象
(2)notify/notifyAll/wait * 3 -> 跟线程相关,先不学
2)Object clone() - 克隆
(1)对象的克隆方式(图解)
深克隆:复制对象
是复制一份全新的,属性内容一致的对象,但是内存中的地址值一定不一样
浅克隆:复制引用
(2)调用
clone调用时 -> not visible(不可见)
要求: clone的对象必须标记是可克隆的,因为他是protected修饰的,只能在子类中可见,所以要进行重写
(3)一般不会重写clone方法
I:因为clone方法不常用到
II: 可以直接使用 - 引用复制
III: 如果要重写clone方法,直接调用,则要实现Cloneable接口,否则会抛出CloneNotSupportedExecption
Cloneable是一个空接口.目的只有一个就是为了标记是 可克隆的
3)void finalize() - GC 垃圾回收机制
内存溢出:在内存中没有存储的地方
内存泄漏:内存被无效对象占用
一个对象分配内存之后,在使用结束时没有来得及释放,导致一直在占用内存,使得实际可用内存减少
GC - 垃圾回收机制,定时清理内存
I: 在程序运行时是开始启动,不定时回收内存中标记的垃圾,没有引用的对象,会被内存标记为垃圾
II: GC是自动调用的,也可以手动调用GC - Sytem.gc();
总结: 原则上,Java中是不存在内存泄漏的
4)toString():将对象以字符串的形式输出
默认实现:
getClass().getName() + “@” + Integer.toHexString(hashCode())
@前:表示的是完整的类名
@后:表示16进制的hashCode值
如果想要自定义格式输出,那么就重写toString()
5)equals()
作用:判断两个对象[this 和 obj]是否相等
Object中默认实现方式:
this == obj -> 判断两个地址值相不相等
方法重写:
目的:自定义比较规则
步骤:
1.判断是不是同一个对象
2.判断是不是同一个类型
3.既不是同一个对象也不是同一个类型就直接返回fasle
Object Objects(工具类) Arrays Collections
- hashCode()
作用:生成对象的hash值
跟内存中的存储位置相关
public native int hashCode();
hashCode() 不是抽象方法,但是也没有方法体,就是因为他是本地方法,这是跟底层相关的方法
底层是由c实现
native: 本地的
Java Native Interface
java.lang -> String 包装类 线程
java.util -> Arrays Collection Map
java.io -> Input Output
java.text -> 格式化 DateFormat
java.net -> 网络编程 TCP/IP
java.sql -> 数据库
跟时间相关的类:
long类型:
a.获得当前系统时间
long Systen.currentTimeMills()
b.作用:通常用来做计算,计算效率(7天以内的计算)
c.注意:
在进行计算时,需要注意整数类型的默认值是int类型
如果超出了int类型的范围,就是溢出了,就会变成负数
所以需要在计算之前先标记好是long类型,加L/l
Date类:
a.作用:专门用来做时间的显示
b.创建 - 构造方法
1)得到当前系统时间
new Date()
2)得到long类型的时间
new Date(long)
c.常用API
date1.after(date2)
date1.before(date2)
通过Date获得long(Date -> long)
date.getTime()
使用long类型的时间做计算,然后输出Date类型 (long -> Date)
date.setTime()
Calendar - 万年历
a.作用: 专门用来做时间推算或者是时间跳转
b.特点: 是abstract修饰的类,是一个抽象类,所以不能直接new对象,只能创建子类或者调用类的静态方法
c.创建
Calendar.getInstance()
d.常用API
get() - 获取时间
set() - 时间的跳转
add() - 时间的推算
Calendar 和 Date 之间的转换
Calendar -> Date:
Date getTime()
Date -> Calendar:
void setTime()
Calendar 和 long 之间的转换
getTimeInMillis()
setTimeInMillis()
Date 和 long 之间的转换
getTime()
setTime()
java.text - 格式化
SimpleDateFormat
常用API
a.使用指定格式将时间格式化(date -> String)
String format(date)
b.将字符串转变成时间(String -> date)
Date parse(“String”);
c.注意:
要求必须符合SimpleDateFormat的格式
否则就会出现ParseException
gitHub
Git
VCS - 版本控制系统