1. static 修饰的属性,相较于实例变量,有哪些特别之处(>=3点)
(1)随着类的加载而加载,只加载一次;
(2)早于对象的创建;
(3)只要权限允许,可以通过”对象.static属性”的方式进行调用;
(4)存在于方法区的静态域
2. final 可以用来修饰哪些结构,分别表示什么意思
修饰变量:表示常量,初始化后不可以被修改
修饰方法:不可以被重写
修饰类:不能被继承
赋值:显式初始化,代码块,构造器
3. 代码实现单例模式的饿汉式!!!要会手写
定义:所谓单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。
class Person{
//1.私有化构造器
private Person(){
}
//2.对象实例化
//4.实例也必须声明为 static的
private static Person person = new Person();
//3.创建一个可以被类所调用的 static 方法
public static Person getInstance(){
return person;
}
}
注意:
- 类只能用 public 或者缺省的权限修饰符。
- 构造器,对象实例化,返回对象的方法全都声明为 private 的。
- 为了方便调用需要将方法设置为 static 的,同时方法中返回的 person 也必须声明为 static 的。
4. 代码实现单例模式的懒汉式 -目前还是线程不安全的。
class Person{
private Person{
}
private static Person person;
public static Person getInatance(){
if(person == null){
person = new Person();
}
return person;
}
}
5. 类的属性赋值的位置有哪些?先后顺序为何?
(1)默认初始化
(2)显式初始化 、代码块中初始化
(3)构造器中初始化
(4)通过”对象.属性” 或”对象.方法”的方式赋值