static可以修饰静态成员
1.静态变量:
class Student{ static String Id; } public class Demo{ public static void main(String[] args){ Student.Id="2000";//不创建对象就可以访问变量 Student stu1=new Student();//创建学生对象 Student stu2=new Student(); System.out.println("我的号码:"+stu1.Id);//两个对象可以共享静态变量 System.out.println("我的号码:"+stu2.Id); /*如果没有static修饰的变量,则应该给每一个对象都要进行赋值操作: stu1.Id="2000"; stu2.Id="2000"; System.out.println("我的学校:"+stu.Id); System.out.println("我的学校:"+stu.Id); */`
某些特定的数据在内存中只有一份,而且能被一个类的所有实例对象共享。
可以使用类名.变量名的形式来访问。当然也可以先实例化对象在用对象.变量名访问
static关键字只用于修饰 成员变量,不能用于修饰局部变量
静态成员变量可以通过类直接访问
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
非静态成员变量必须要创建实例后才能访问
2.静态方法
class Person{ public static void hello(){ System.out.println("Hello"); } } public class Demo{ public static void main(String[] args){ Person.hello();//直接用类名调用 Person person=new Person();//也可以通过实例化对象调用 person.hello(); } }
调用静态方法时可以不用创建对象,用类名.方法名() 来调用方法
在静态方法中只能访问静态成员(静态变量或者静态方法),不能访问非静态成员
3.静态代码块
static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
注意事项
-
独立于类
-
在类加载的时候执行,只执行一次
-
修饰的方法只在调用时执行
关于static使用的注意事项
1.static方法:方法体内可以调用其他静态方法,不能调用非静态方法;只可以访问方法外部的static变量;不能定义静态变量,可以定义非静态变量。
2.非static方法:方法体内部不能定义static变量;能调用static方法;能调用非static方法。
3.static关键字只能用于修饰成员变量,不能修饰局部变量(如形参、方法体内部变量)。
本次博客有关内容来自
https://blog.csdn.net/Ambition_ZM/article/details/101705741