publci static int count = 0;//静态类变量 指向同一个堆地址
1. static变量是 同一个类 该对象共享 不论对象在何处
2. static变量在类加载的时候就生成了
3. jdk7 以后 变量在 堆中 jdk7之前在方法区的 静态域
注意事项
类方法:
public static void hello(){}//静态方法 指向同一个堆地址
开发自己的工具类时,可以将方法做成静态,方便调用
·
注意事项:
1. 类方法和普通方法都是随着类的加载而加载,将结构信息存放在方法区, 类方法不允许有this,super 普通方法可以有
2. 类方法可以用类名调用,也可以用对象调用
3. 类方法中只能访问静态变量和静态方法
main 调用 其他非静态方法new对象 通过对象调其他方法
代码块:初始化块,加载类调用
[修饰符]{
}
可以理解为对构造器的一种补充,优先调用代码块->构造器
类加载3种方式:
1. 创建对象时候被加载
2. 创建子类对象时候,被加载
3. 使用类的静态成员时候(静态属性,静态方法)
区别:
静态代码块 只执行一次 类加载 就执行 可以通过 new对象 和 调 静态成员时候(静态代码块和静态属性 顺序调用)
普通代码块 只要new 一个对象就 执行一次(普通代码块和普通属性 顺序调用)
例如:
public void hello{
1.super() //优先调用 1
2.执行 普通 代码块 //优先调用 2
3.构造方法
}
总 结: 静态代码块 > 普通代码块 > 构造内部方法
静态只能用静态 普通用任意
先 静态代码块-静态属性-普通代码块-普通属性-构造方法
饿汉式:一个内存地址对象,可能创建了没有调用 造成资源浪费
最终的,不可被改变的
final的使用注意事项:
1. final修饰的属性又叫常量,一般大写表示
2. final修饰的 普通属性 必须给值
可以在 1.定义时候 2.在构造器中 3.在代码块中
3. 如果final修饰的是静态 只能在 1.定义时候 2.静态代码块 3.不能再构造器中赋值
4.final不能被继承,但是可以实例化
5.一个类是final了,该类的方法没有必要修饰为final了
6. final和static一起使用时,底层做了优化,不会加载类!
7. (Integer,Double,Float,Boolean等都是final),string也是final类
抽象类
注意事项:
注意:1抽象方法 2默认实现(default)3静态方法实现(static)
接口注意事项:
接口可以继承 别的接口 接口多态传递机制
内部类 四种类型
局部内部类在 方法 代码块 中 new 局部类调方法!(只在方法体或代码块中有效)
局部内部类调用 外部类的属性时 类名.this.属性名
局部内部类 在方法中进行 new(局部类)然后调用局部类的方法
匿名内部类也是在 局部 方法 没有名字 是一个对象
调用接口中的方法 ,匿名重写 方便 一次
(只在方法体或代码块中有效)
包含了 继承 多态 动态绑定 内部类
匿名内部类的使用细节:
注意:成员内部类在 成员中,不在局部中 可以调用任意的属性 还能 给自己设修饰符 在外部成员方法中new 成员内部类 调方法
其他类访问 成员内部类时
静态类不能直接访问非静态属性
外部访问静态类:
第三种方式:类名+静态方法(返回对象)
卖油翁:"无他,唯手熟而" 中高级基础结束了~~笔至
评论