一、内部类
1,定义:
在类中定义一个类
class S{
class B{}
}
S:外部类
B:内部类
2,原因
内部类是为了补充外部类的功能而产生的3,分类
1,成员内部类
定义:在类中、方法以外定义一个类
类中有:
代码块,属性,普通方法,构造函数,抽象方法【静态相关的都不能有】
如何创建对象:
外部类类名 . 内部类类名 对象名 = 外部类对象 . new 内部类类名(实参列表);
注意:
内部类所在的外部类的方法中创建内部类对象
普通方法:因为里面有this,所以可以直接创建
静态方法:因为不能使用this与super,所以需要先创建外部类对象,在创建内部类对象
当内部类属性与外部类属性重名时如何区分:
1,this.属性名:内部类属性
2,外部类类名.this.属性名:外部类属性当内部类方法与外部类方法重名时如何区分:
1,this.方法名(实参列表):内部类方法
2,外部类类名.this.方法名(实参列表):外部类方法2,静态内部类
定义:在类中、方法以外定义一个类【给成员内部类中static修饰】
类中有:
外部类有的,内部类都有
如何创建对象:
外部类类名 . 内部类类名 对象名 = new 外部类类名 . 内部类类名(实参列表);
注意:
内部类所在的外部类的方法中创建内部类对象,直接创建当内部类属性与外部类属性重名时如何区分:
1,this.属性名:内部类属性
2,内部类类名.属性名:内部类静态属性
3,外部类类名.属性名:外部类静态属性
4,注意:
静态内部类中不能使用外部类非静态成员(非静态属性与非静态方法)
3,局部内部类
定义:在类中的方法中定义一个类
类中有:
非静态属性,方法,代码块,构造函数
如何创建对象:
内部类类名 对象名 = new 内部类类名(实参列表);
注意:
在该类方法中定义该类内部类后,直接创建
只能在该方法中创建
当内部类属性与外部类属性重名时如何区分:
1,this.属性名:内部类属性
2,外部类类名.this.属性名 :外部类属性4,匿名内部类(重点+难点)
定义:没有类名的内部类
优点:
便于书写
缺点:
1,一个匿名内部类只能创建一个对象
2,每个匿名内部类都会生成一个class文件
3,导致代码混乱,不易阅读
总结:
父类名/接口名 对象名 = new 父类名/接口名(){
属性
方法【重写的方法/特有的方法】
无构造函数,因为没有内部类类名
}
二、Object类
1,作用:所用类的父类
1. 多态 --->所有的类的对象都可以转换为Object对象
2. 继承 --->所有的类都拥有Object提供的属性和方法
2,方法:
toString():将对象转换为字符串
Object提供的该方法是返回对象所属的类的路径@对象的哈希码值(16进制的)
打印对象时,默认会调用对象的toString方法
所以重写toString方法,可以让打印对象时,打印的是对象的属性值,以便于观察
hashCode():获取对象的哈希码值
equals():
Object提供的该方法是比较两个对象内存地址是否相同
getClass():反射时讲
notify():线程间通讯, 随机唤醒一个调用该方法的对象,作为锁对象的线程
notifyAll():线程间通讯,唤醒所有调用该方法的对象,作为锁对象的线程
wait():线程间通讯,让当前线程进入无限期休眠
finalize():当对象所在的堆内存被GC回收时,由JVM调用该方法
三、System类
1,概念:
系统
2,常用方法:
1,作用 : 拷贝数组
public static void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
参数1:原数组
参数2:开始位置(下标的位置)
参数3:新数组
参数4:新数组的开始位置(下标的位置)
参数5:拷贝的数据个数
2,作用 : 结束程序
public static void exit(int status)
参数为0正常退出,非0,不正常退出
3,作用 : 调用java垃圾回收机制(GC)
public static void gc()
调用时机:
1,当内存快满时,由JVM自动调用
2,使用System.gc()手动调用垃圾回收机制
4,作用 : 获取当前时间与1970年1月1日00:00:00的毫秒值(格林威治时间)
public static native long currentTimeMillis();
5,重写equals方法
作用:判断两个对象是否相同
@Override
public boolean equals(Object obj) {
//1,判断调用该方法的对象与传入的对象内存地址是否相同
if (this == obj) {
return true;
}
//2,判断传入的对象是否属于该类的对象
if (obj instanceof Dog) {
//3,将传入的对象转换为该类对象
Dog dog = (Dog)obj;
//4,使用调用该方法的对象的属性与传入的对象的属性进行一一比较
if ( this.getName().equals(dog.getName() )
&& this.getSex().equals(dog.getSex() )
&& this.getType().equals(dog.getType() )
&& this.getColor().equals(dog.getColor()) ) {
return true;
}
}
return false;
}
四、Arrays类1,作用 :
集合工具2,常用方法:
排序:
public static void sort(数组)
将数组转换为特定格式的字符串
public static String toString(数组)
学习Java简单整理笔记--Day13
最新推荐文章于 2024-05-25 12:01:51 发布