static关键字
在类中,被static修饰的变量称为静态成员变量,如果想让一个类的所有实例共享数据,就用类变量。
1.在设计类时,分析哪些属性不会因为对象的不同而改变,就可以把这些属性设置为类变量。相应的方法设置为类方法。
2.如果方法与调用者无关,则这样的方法通常被声明为类方法,由 于不需要创建对象就可以调用类方法,从而简化了方法的调用。
一,使用范围
在java中,可用static修饰属性,方法,内部类,代码块。
二、特点
被修饰后的成员具备以下特点:
4. 访问权限允许时,可不创建对象,直接被类调用
类变量可以不创建对象就直接访问,通过 类名.属性 /类名.方法。
使用时注意,静态的成员不能直接访问非静态的属性和方法,但是非静态的对象能访问静态的属性和方法,静态的属性也不能用this关键字。
代码块
代码块属于类的成员之一,作用是对java类或对象进行初始化,一个类中代码块若有修饰符,只能是static。
一、分类
静态代码块:用static 修饰的代码块
1.可以有输出语句。
2. 可以对类的属性、类的声明进行初始化操作。
3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
5. 静态代码块的执行要先于非静态代码块。
6. 静态代码块随着类的加载而加载,且只执行一次。
非静态代码块:没有static修饰的代码块
1.可以有输出语句。
2. 可以对类的属性、类的声明进行初始化操作。
3. 除了调用非静态的结构外,还可以调用静态的变量或方法。
4. 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
5. 每次创建对象的时候,都会执行一次。且先于构造器执行
Final关键字
在java中声明类、变量、方法时,可使用final关键字,表示“最终的”。它有以下特点:
1.final标记的类不能继承。
2.final标记的方法不能被子类重写。
3.final标记的变量称为常量,名字大写,且只能赋值一次。
可以考虑赋值的位置:
显示初始化值
代码块内初始化
构造器内初始化
final也可以修饰局部变量,在作用域内不可修改。
运行时的先后顺序
当默认初始化、显示初始化、代码块、构造器、对象.访问属性,同时在一段代码中时,执行的先后顺序为 默认初始化>显示初始化/代码块(哪个在前就先执行哪个)>构造器>对象.访问属性。
举个·简单的例子:
public class B {
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println("构造块");
}
static
{
System.out.println("静态块");
}
public static void main(String[] args)
{
B t = new B();
}
}
运行结果为:
构造块
构造块
静态块
构造块
在这一段代码中,一开始创建了两个对象t1,t2,且是静态的,在每一次创建对象之前都会执行一遍代码块里的内容,所以先打印了两个“构造块“。之后执行静态代码块里的内容,打印“静态块“。最后执行主方法里内容,创建了对象t,打印一遍“构造块”。