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 拓展一下,在类中定义的{}之间被称为构造块,构造块相对于构造方法先执行,构造块之间按照代码编译顺序执行 此外还有普通代码块,存在于方法之中。 贴出参考文章:http://www.cnblogs.com/sophine/p/3531282.html
2.Final
3.代码实现单例模式 的 饿汉式
4.代码实现单例模式的懒汉式-目前还是线程不安全的
5.类的属性赋值位置有哪些?先后顺序
默认初始化
显示初始化、代码块中初始化
构造器初始化
通过“对象.属性”或“对象.方法”赋值
代码块:静态大妈块 非静态代码块
抽象类和接口的异同?
相同点:不能实例化,都可以包含抽象方法
不同点:类但继承性 接口式多继承性 多实现。