原创

重拾java路-中高级篇


类变量

1

语法
访问修饰符(遵守访问权限) static 数据类型 变量名:(推荐)
static 访问修饰符 数据类型 变量名:
publci static int count = 0;//静态类变量 指向同一个堆地址

 1. static变量是 同一个类 该对象共享 不论对象在何处 
 
 2. static变量在类加载的时候就生成了
 
 3. jdk7 以后 变量在 堆中 jdk7之前在方法区的 静态域
内存分析图(随着类加载而创建)

1

注意事项

1 1

类方法

1

类方法:
public static void hello(){}//静态方法 指向同一个堆地址
开发自己的工具类时,可以将方法做成静态,方便调用

·

注意事项:

 1. 类方法和普通方法都是随着类的加载而加载,将结构信息存放在方法区,    类方法不允许有this,super 普通方法可以有
 
 2. 类方法可以用类名调用,也可以用对象调用
 
 3. 类方法中只能访问静态变量和静态方法

main的原理

1

main 调用 其他非静态方法new对象 通过对象调其他方法

代码块

代码块:初始化块,加载类调用
	[修饰符]{

	}

1

可以理解为对构造器的一种补充,优先调用代码块->构造器

1

静态代码块和普通代码块和类加载
类加载3种方式:
 1. 创建对象时候被加载
 2. 创建子类对象时候,被加载
 3. 使用类的静态成员时候(静态属性,静态方法)

区别:
 静态代码块 只执行一次 类加载 就执行 可以通过 new对象 和 调 静态成员时候(静态代码块和静态属性 顺序调用)
 普通代码块 只要new 一个对象就 执行一次(普通代码块和普通属性 顺序调用)

1

1

构造器被执行前有2个隐藏条件

 例如:
  public void hello{
		1.super() //优先调用 1
		2.执行 普通 代码块 //优先调用 2
		3.构造方法
  }
  
 总 结: 静态代码块 > 普通代码块 > 构造内部方法
 静态只能用静态 普通用任意

创建子类对象(继承关系)对象调用图 重要!!!

先 静态代码块-静态属性-普通代码块-普通属性-构造方法

1

(static)例子:单列设计模式

饿汉式:一个内存地址对象,可能创建了没有调用 造成资源浪费

1

final(类加载)

最终的,不可被改变的

1

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类

abstract

抽象类

1

注意事项:

1

1

接口

注意:1抽象方法 2默认实现(default)3静态方法实现(static)

1

接口注意事项:
接口可以继承 别的接口 接口多态传递机制

1

1

接口和继承的区别

1

内部类

内部类 四种类型

1·

局部内部类
局部内部类在 方法 代码块 中 new 局部类调方法!(只在方法体或代码块中有效)

1

局部内部类调用 外部类的属性时 类名.this.属性名
局部内部类 在方法中进行 new(局部类)然后调用局部类的方法

1

匿名内部类(接口,类方法 调用 简化)用的多!!!!当对象使用
匿名内部类也是在 局部 方法 没有名字 是一个对象

调用接口中的方法 ,匿名重写 方便 一次

(只在方法体或代码块中有效)

包含了 继承 多态 动态绑定 内部类

1

1

匿名内部类的使用细节:

1 1 1

成员内部类
注意:成员内部类在 成员中,不在局部中 可以调用任意的属性 还能 给自己设修饰符 在外部成员方法中new 成员内部类 调方法

1 1

其他类访问 成员内部类时

1

静态类
静态类不能直接访问非静态属性

1

外部访问静态类:

1

第三种方式:类名+静态方法(返回对象)

1

卖油翁:"无他,唯手熟而" 中高级基础结束了~~笔至
学校
生活
总结
经验
  • 作者:阿杰(联系作者)
  • 发表时间:2022-10-07T17:52:47
  • 版权声明:杰出版
  • 公众号:--无
  • 评论