包:package 对代码的分层管理
打包 package com.fyb.test;
引包 import + 地址目录(java.util.*);
访问修饰符: public protected 默认 private
本类 1 1 1 1
同包 1 1 1
继承 1 1
无限制 1
Object:类似女娲,是所有类的父类
toString():直接输出打印值用
finalize():析构函数,垃圾回收用
System.gc();//提醒系统进行垃圾回收
垃圾回收: 1、什么时候回收?不好说 自动回收 cpu调用它 System.cg();//用来提醒计算机进行回收 守护线程
2、没有引用指向的 是垃圾
==:比较的是地址( hashcode:内存中开辟空间时创建的地址,可以代表地址,但不完全是地址)
equal:底层==,比较两个是不是同一对象,比较的是地址hashcode
hashcode:重写equals,必须重写hashcode;equals相等,hashcode一定相同;hashcode相同,equals不一定相同
==与equals:
==:比的基本数据类型,也可比引用数据类型,比的是地址
equals:比引用数据类型,比的是地址,想让其比较值,需要重写
抽象类和接口
抽象方法:用abstract修饰的方法
抽象类:用abstract修饰的类,父类方法不能满足大多数子类方法 抽象方法需要在抽象类中
接口:当父类中所有方法,都是抽象方法,那么可以把父类定义成接口 interface修饰
区别:
1、抽象类中可以有抽象方法,也可以有普通方法。 接口中只能有抽象方法。
2、抽象类中的抽象方法,必须用abstract修饰 接口中的抽象方法可以省略abstract
3、子类继承抽象类,必须重写父类的抽象方法 子类继承接口,必须全部重写父类的抽象方法
4、子类继承抽象类用extends 子类继承(实现)接口,用implement
5、抽象类中有构造方法,但不能直接实例化 接口中没有
普通类(sub)
extents extents implements
普通类 普通类 接口(sup)
抽象类
extents extents implements
普通类 抽象类 接口
接口
X X extents
普通类 抽象类 接口
内存五大分区:
程序计数器
虚拟机栈(for循环int i=0;)
方法区(静态的东西,字符串)
本地方法栈
堆(属性,引用数据类型)
static:静态的,所属于类,全局唯一,被所有类所共享,用 类.属性名/方法 调用
修饰属性,也可以修饰方法,所属于类,静态方法中不能出现非静态属性,存储在方法区
静态块:随着类的加载,即运行
加载顺序:父类静态块,子类的静态块,父类的非静态块,父类的构造方法,子类的非静态块,子类的构造方法
final:常量
修饰
变量:可以不赋初值,一旦赋值不能改变
属性:必须赋初值,一旦赋值不能改变;或者在块或构造函数中赋初值
方法:不能被重写
类:不能被继承
内部类:匿名内部类,方法内部类,成员内部类(在类体中)、静态内部类
枚举:有要求多少个对象(有固定多个),如一年只有12个月
封装:get set方法;属性私有化
多态:多种形态,父类定义,子类实例化
修饰类(内部类)的修饰符有6个:public private protected static final abstract
外部类2个:public protected