1、语法
1、类(普通类/接口)
代码的核心都在类上,用类去组织代码
class A{
void method(){
}
}
三个级别:顶级
成员级别
方法级别
定义类:三个级别都是允许的,出现在成员级别的称为内部类
内部类分为三种:1、静态内部类,只能定义在成员级别,并且要用static修饰它,只代表一种所属关系,作用:组织代码
2、内部类(Inner Class): 成员级别+不加static
方法级别
3、匿名类(匿名内部类) (类的定义+对象一起的)了解: 成员级别
方法级别
类的限定符:访问限定符:public protected default private
static
final
abstract
static(成员级别) 5个作用:修饰类,方法,变量,属性,静态代码块,静态导入(了解) (和外部类对象解绑,存在类上)
final3个作用:修饰类,方法,变量 (final修饰方法,表示方法不能被覆写)
abstract 2个作用:修饰类,方法
抽象类和普通类的区别:抽象类无法被实例化,无法定义抽象类的对象。
类的加载:把类文件从硬盘加载到内存中
类文件:就是class文件
静态方法和调用栈有关系,方法的运行阶段有区别,表现在调用栈上
普通方法和静态方法的区别:this指向当前对象的引用,this还可以调用构造方法,静态方法中不能使用this,静态方法中无法直接调用普通方法,不能直接访问普通属性
public:公开
protected:包和其他包下的子类
defaut:包内
private:本类,本类内部类(当作本类成员)
对象的而创建(对象的实例化)
1、new
2、反射
什么是对象的实例化:1、从方法区中找到该类的信息,如果没找到?触发类的加载 (类的加载器)ClassLoader
2、对象最终放在堆上
3、计算对象的大小(属性(包括父类))
4、开辟的空间初始化0x0(属性的默认值都是0)
5、属性的初始化 :
1、定义时的初始化 int a=0;
2、构造代码块 {a=10;}
3、构造方法 A(){a=10;}
(1、2优先执行,1、2的顺序按写的顺序执行,然后再执行3)
对象的生命周期:
1、开辟空间+设置0x0 (1、2是对象正在诞生)
2、属性初始化阶段
3、真正生命开始
4、标记为死去(尸体还在) GC回收
GC算法:
1、怎么判断对象是否死去
2、怎么快速高效的回收尸体
编译期间 + 编写期间 + 运行期间
IDEA javac java(JVM)你的程序
程序员 程序员 用户
*.java *.class 真实的效果了
(类的属性是static的,对象的属性是普通的)