Day08、java基础补充
内部类,代码块,静态导包
1.内部类
1.1.内部类最大好处在于:能直接访问外部类的私有属性
故类本身组成是属性和方法,但是引用了我们的内部类,程序的结构就发生了变化。

1.2.内部类的私有属性也可以通过外部类的对象调用

因此:
内部类和外部类的私有属性都是可以直接进行相互访问的,这一点就说明这样比再创建一个外部类来的方便。
1.3在其他类创建内部类对象:
外部类.内部类 变量=new 外部类().new 内部类()


内部类调用外部类私有属性:外部类.this.私有属性变量

1.3 私有内部类
不能在外部类外创建内部类对象,只能被本外部类访问

1.4静态内部类 :static class =外部类
创建内部类对象语法:
外部类.内部类 对象名称=new 外部类.内部类();

小提示:以后见到 SSS . sss就表示内部类
1.5方法中定义内定义内部类
理论上内部类可以定义到代码块,方法中,类中,实际开发中可能会在方法里使用内部类。
在方法中定义内部类(jdk1.8以前在方法内定义内部类时,其方法参数,方法内的变量都需要加上final)

之所以可以不用final,主要是因为Lamda表达式的一起引用造成的

2.代码块
组成:class 类名{ {代码块} }
分为四种:普通代码块、构造代码块、静态代码块、同步代码块
2.1普通代码块

2.2 构造代码块
将普通代码块提取到类中使用,就叫构造代码块

构造代码块优先于构造方法,每一次实例化对象时会被重复调用
2.3静态代码块


执行:静态代码块优先于主方法(jdk1.7之前的bug),如今是需要依赖于主方法。
2.4 同步代码块
用于线程里面:synchronized(obj){
//同步代码块
}
3.静态导包
静态导包就是java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性。
import static com…..ClassName.*;(多了一个"static"关键字,多了".*")
没有使用静态导包

使用静态导包后

注意:
1.不能使用不清楚的static成员,例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将会因两个类的常量名相同值不同无法找到确定的常量进而引起编译器出错。
2.在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。
网友评论