static:静态的
- static可以修饰成员变量,称为静态变量,在方法区
标准使用方式:类名.静态变量名
另一种使用方式:对象名.静态变量名 - static可以修饰成员方法 ,称为静态方法
标准使用方式:类名.方法名()
另一种使用方式:对象名.方法名()
public class Student {
String name; //name与age称为成员变量,在堆
int age;
static String school;//静态变量,而且在方法区
public void show(){//成员方法
}
public static void fun(){ //静态方法
}
}
public class TestStudent {
public static void main(String[] args) {
Student.school="北京大学"; //静态变量的使用方法,是 类名.静态变量名
//Student.name="张三"; //成员变量
Student stu=new Student();
stu.name="张三";
stu.school="清华大学";//不报错,但是会警告
Student.fun();//静态方法, 类名.方法名
//Student.show();//成员方法,
stu.show();
stu.fun(); //不报错,但是会警告
}
}
- static修饰代码块,称为静态代码块
为类的静态变量进行赋初始值
代码块:使用{}括起来的代码
①普通代码块:定义在方法里
②构造代码块:类中方法外,执行优先于构造方法,每创建一个对象执行一次。
③静态代码块:成员代码块前加static,为类的静态变量进行初始化,在类加载时执行一次,执行优先于构造代码块
④同步代码块
构造方法,构造代码块,静态代码块执行顺序
静态代码块–>构造代码块–>构造方法
public class Block {
public Block(){
System.out.println("--------构造方法");
}
//(2)构造代码块
{
System.out.println("构造代块码");
}
//(3)静态代码块
static{
System.out.println("----------静态代码块------------");
}
public static void main(String[] args) {
//(1)普通代码块,限定局部变量的作用域
{
int a=10;
}
//System.out.println(a);//报错,超出了a的使用范围
new Block(); //匿名对象
new Block();
}
}
- 修饰内部类,称为静态内部类
static不允许使用成员变量
因为static是先加载到内存中的,在加载static的方法时,成员变量还没“出生”
来源:CSDN
作者:Penerx
链接:https://blog.csdn.net/penerx/article/details/104346833