JAVASE 小白学习笔记 static关键字的解析

在Java学习中,我们经常会见到static关键字。static关键字在java中指的的是静态的意思,可以修饰成员变量与成员方法。
下面对于static关键字进行总结。


1.static 关键字修饰成员变量

当staic关键字修饰成员变量时,此变量被共享变量,被这个类中的所有对象所共享。

public class MyTest1 {
    
    
    public static void main(String[] args) {
    
    
        Person p1 = new Person();
        p1.name="张三";
        p1.guoji="美国";
        Person p2 = new Person();
        p2.name="李四";
        p2.guoji="英国";
        Person p3 = new Person();
        p3.name="王五";
        p3.guoji="法国";
        System.out.println(p1.guoji);//法国
        System.out.println("===========");
        System.out.println(p2.guoji);//法国
        System.out.println("===========");
        System.out.println(p3.guoji);//法国

    }
}



class Person{
    
    
    //成员变量
    public String name;
    //静态变量
    public static String guoji;
        }

在这里插入图片描述

注意:方法区会存储当前类类信息,包含类的静态变量,类的初始化代码(定义静态变量时的赋值语句和静态初始化代码块等)


2.static 关键字修饰成员方法

被static修饰的方法,在方法的内部,只能访问静态成员,不能访问非静态成员
在静态成员方法不能出现this关键字

public class MyTest {
    
    
    public static void main(String[] args) {
    
    
        Star star = new Star();
        star.eat();
        //静态成员的调用推荐使用类名调用
        Star.run();
        Star.show2();
    }
}

class Star{
    
    
    //静态变量
    public static int age=25;
    //成员变量
    public String name;
    public void show(){
    
    
        System.out.println(this.name);
        System.out.println(age);
    }
    //静态方法中不能访问非静态变量,只能访问静态变量
    public static void show2(){
    
    
        System.out.println(age);
        /*静态成员随着类的加载而加载,
        优先于对象存在,先存在访问不到后存在的*/
        //System.out.println(name);
        /*this 代表本类的一个引用(对象)
        静态成员随着类的加载而加载,优先于对象存在,先存在访问不到后存在的*/
        //System.out.println(this);
    }
    public void eat(){
    
    
        System.out.println("吃饭");
        this.sleep();
    }
    public void sleep(){
    
    
        System.out.println("睡觉");
    }
    public static  void run(){
    
    
        //静态方法中只能访问静态方法
        //this.sleep();
        show2();
    }
}

总结
static:可以修饰成员变量,可以修饰成员方法
修饰成员变量,此变量为共享变量,被该类的所有对象所共享
被static所修饰的方法,在方法内部只能访问静态成员,不能访问非静态成员
在静态方法中不能出现this关键字
被静态所修饰的成员,推荐使用类名去调用

上面的原因是:
被静态所修饰的成员,随着类的加载而加载,是优先于对象存在的,先存在访问不到后存在的

猜你喜欢

转载自blog.csdn.net/qq_41537102/article/details/110200182