Java基础三 Static ,Final

1.static  修饰的属性,相较于实例变量 有哪些特别之处?

随着类的加载二加载 早于对象的创建:只要权限允许 可以通过

对象 static 属性的方法进行调用: 存在于方法区的静态域

用来修饰类的内部结构=》属性、方法、代码块、内部类 构造器

如何判断属性和方法应该使用static 关键字

属性是可以被多个对象所共享不会随着对象的不同而不同

类的常量也是常常声明为static

 题目训练:

public class TestStatic {
static int x=10;
static {x+=5;}
public static void main(String[] args)
{
System.out.println("x="+x);//x=5
}
static{x/=3;};
}

Comment:
首先明确一下执行顺序,静态代码块先于主方法执行,静态代码块之间遵从代码顺序执行。
所以:先初始化静态变量x=10;//x=10
执行第一个静态代码块,x=x+5; //x=15
执行第二静态代码块 x=x/3; //x=5
执行主方法: 输出x=5
拓展一下,在类中定义的{}之间被称为构造块,构造块相对于构造方法先执行,构造块之间按照代码编译顺序执行
此外还有普通代码块,存在于方法之中。

 

2.Final

 

3.代码实现单例模式 的 饿汉式

4.代码实现单例模式的懒汉式-目前还是线程不安全的

5.类的属性赋值位置有哪些?先后顺序

默认初始化

显示初始化、代码块中初始化

构造器初始化

通过“对象.属性”或“对象.方法”赋值

 

代码块:静态大妈块 非静态代码块

抽象类和接口的异同?

相同点:不能实例化,都可以包含抽象方法

不同点:类但继承性 接口式多继承性 多实现。

 

posted @ 2021-05-22 16:43  tzmok  阅读(41)  评论(0编辑  收藏  举报