一、static修饰成员变量
/**
* 学生类
*/
class Student{
public String name;//姓名
public String sex;//性别
public static String classes = "软工2102";//班级 static修饰成员变量
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +",classes="+'\''+classes+'\''+
'}';
}
}
public class Test {
public static void main(String[] args) {
Student stu = new Student(); //实例化对象
stu.name = "飞飞";
stu.sex = "男";
Student.classes = "软工2101"; //通过类名进行访问
System.out.println(stu);
}
}
1.static是属于类的,因此是在JVM加载类时才创建空间并初始化的
2. 由static修饰的成员变量,是不属于对象里面的而是属于类的,且*存在于方法区,只有唯一的一份 *。
3. 由类名进行访问,也可以用对象来访问,但是往往比较推荐前者。
二、static修饰成员方法
/**
* 学生类
*/
class Student{
public String name;//姓名
public String sex;//性别
public static String classes = "软工2102";//班级 static修饰成员变量
public static void fun(){
System.out.println("玩游戏!");
}
public void Show(){
System.out.println("介绍自己!");
}
public static void func(){
name = "飞飞"; //非静态修饰的成员属性报错
classes = "软工2101"; //用static修饰的成员属性没有报错
fun();//用static修饰的成员方法没有报错
Show();//非静态修饰的成员方法报错
}
}
- static修饰成员方法的时候,在静态方法内只能访问静态的成员与方法,不能访问非静态成员与方法。
- 在非静态的成员方法内,可以访问静态的成员与方法。