static关键字

it2022-05-09  62

static关键字

当使用static关键字修饰之后,成员变量和方法都可以直接使用类名进行调用,非静态的成员变量和方法需要实例化一个本类的对象,通过对象进行调用。 static关键字经常被用于工具类当中,因为在对工具类当中的成员变量、方法使用了static关键字后,在其他类中就可以直接使用类名调用,不用再去创建对象。

static属性:

当一个成员变量使用static标识符进行修饰之后,该成员变量就成为了一个静态的成员变量。静态成员变量跟非静态成员变量最大的区别就是,静态成员变量存储在静态常量区中,而非静态的成员变量则存储在栈或者堆空间中。 注意: 当一个变量被声明为static类型的变量之后,它就变成了全局变量。当代码在某一处修改了该变量的值,该变量的值在程序的其他地方也会被改变。

class test{ public static int a = 0; } class test2{ public static void main(String[] args){ System.out.println(test.a); } }

静态方法:

当一个方法使用了static进行修饰之后,此方法就变成了一个静态方法。 静态方法只能访问静态的成员变量。 静态方法只能调用静态方法或被静态方法所调用。 如果想在静态方法中调用非静态的成员变量或非静态方法,只能通过实例化对应类的对象,通过对象进行调用。

public class test { //非静态成员变量 String str1 = "haha"; //静态成员变量 static String str2 = "hehe"; //非静态方法 public void printString() { //非静态方法可以访问所有的成员变量,没有限制 System.out.println(str1 + str2); } //静态方法 public static void printStaticString() { //静态方法只能够访问静态的成员变量 // System.out.println(str1 + str2);//这里的str1会报错,提示str1是非静态成员变量不能访问 //想要在静态方法里访问非静态成员变量,可以通过实例化本类对象实现 test t = new test(); System.out.println(t.str1); } }

静态代码块:

格式: static关键字 + { 代码 }

class test{ static{ System.out.println("静态代码块执行"); } }

注意: 方法体中不能出现静态代码块。

执行: 使用static关键字修饰之后,成员变量、代码块都会在类加载时(xxx.java文件编译成xxx.class文件时)进行加载执行,且只会执行一次。


最新回复(0)