类加载加一些常用API

一、类加载器

1、什么是类加载?

 类加载,指的是将类的.class文件中的二进制数据读入到内存中,把它放进运行时数据区的方法区内(Perm区)。

2、 什么是类加载器?

 类加载器就是加载字节码文件(.class)
在这里插入图片描述

3、类加载器的种类

1)BootStrap:引导类加载器:加载都是最基础的文件
2)ExtClassLoader:扩展类加载器:加载都是基础的文件
3)AppClassLoader:应用类加载器:三方jar包和自己编写java文件

要有优先级:先是引导类加载器 然后是扩展类加载器 最后是应用类加载器

若自己定义了一个 java.lang.String类 是不能用的 因为引导类加载器会先加载 rt.jar包中的String类 不会加载自己定义的那个String类

4、怎么获得类加载器?(重点)

ClassLoader 字节码对象.getClassLoader();
可以得到所有的资源(classpath)


二、面向对象

1、三大特性:封装、继承、多态

封装
 -》隐藏的代码实现的细节
 -》使用简单,方便
 -》维持数据安全性,维护维护程序的健壮性
继承
 -》使用extends关键字实现继承
 -》继承父类的属性和方法
 -》继承只支持单一继承,一个子类只能继承一个父类
多态:
多态是同一个行为具有多个不同表现形式或形态的能力
 -》java中多态的体现
 -》类的继承
 -》方法重载
 -》方法的重写
 -》接口的实现

三、API

1、Object类

1).clone方法
深克隆伴随着对象的序列化和反序列化
默认情况下是浅克隆
在这里插入图片描述
2).getClass方法
获得字节码对象(Class对象)。只要类加载到方法区就会产生类对象(只有一个)。
3).toString方法
返回对象的字符串表示形式。
4).finalize方法
该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。
5).equals方法
该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。
6).hashCode方法
返回对象的哈希码值。
7).wait方法
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。
8). wait(long timeout)
导致当前线程等待,直到另一个线程调用 notify()方法或该对象的 notifyAll()方法,或者指定的时间已过。
9). wait(long timeout, int nanos)
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间。
10).notify方法
该方法唤醒在该对象上等待的某个线程。
11).notifyAll方法
该方法唤醒在该对象上等待的所有线程。

Object类常用的三种方法:
equals(),toString(),hashCode()

finalize方法GC垃圾回收机制有关,原则上讲Java不存在内存泄漏,
GC回收对象(被标记为垃圾对象):
1.虚拟机栈(栈帧中的本地变量表)中的引用的对象。
2.方法区中的类静态属性引用的对象。
3.方法区中的常量引用的对象。
4.本地方法栈中JNI(即一般说的Native方法)的引用的对象。

什么时候会存在内存泄漏?
GC不是24小时回收,在GC不工作的时候,如果产生大量用不到的对象,来不及回收就可能出现内存泄漏问题,一般会发生在递归情况下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值