static表示“静态”的意思,可以用来修饰成员变量和成员方法
static的主要作用在于创建独立于具体对象的域变量或者方法
- 静态成员 在类加载时加载并初始化。
- 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )
- .在访问时: 静态不能访问非静态 , 非静态可以访问静态 !
一般我们将某个属性定义为static时候,会给外部提供两个方法,setters和getters用于外部调用。
package com.zlj.example0526;
public class Demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//静态属性
Employee.region = "北京";
Employee e1 = new Employee("张三");
Employee e2 = new Employee("李四");
Employee e3 = new Employee("王二");
Employee e4 = new Employee("麻子");
e1.say();
e2.say();
e3.say();
e4.say();
Employee.region = "贵州";
e1.say();
e2.say();
e3.say();
e4.say();
}
}
class Employee{
private String name;
static String region;
Employee(){}
Employee(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static String getRegion() {
return region;
}
public static void setRegion(String region) {
Employee.region = region;
}
void say() {
System.out.println("姓名为:" + name + ", 地区为" + region);
}
}
输出:
构造方法 与 构造代码块 以及 静态代码块的执行顺序:
静态代码块 --> 构造代码块 --> 构造方法