Java中的static方法访问特点 + static变量特点

2021-05-05  本文已影响0人  夜希辰

学习笔记:仅static访问特点

目录
1、static修饰的方法访问特点
2、static变量的特点

参考文章:Java中的static关键字解析

static是一个修饰符,static关键字是静态的意思,可以修饰成员方法,成员变量
static关键字的用途:方便在没有创建对象的情况下来进行调用(方法/变量)

1、static修饰的方法访问特点

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。
并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

static修饰的方法访问特点

public class Student  {
    //非静态成员变量
    private String name = "";
    //静态成员变量
    private static String university = "传智大学";
    //非静态成员方法
    public void show(){
    }
    //非静态成员方法
    public void show2(){
        System.out.println(name);//非静态成员变量
        System.out.println(university);//静态成员变量
        show();//非静态成员方法
        show3();//静态成员方法
    }
    //静态成员方法
    public static void show3(){
    }

    //静态成员方法
    public static void show4(){
//        System.out.println(name);//非静态成员变量  报错
        System.out.println(university);//静态成员变量
//        show();//非静态成员方法   报错
        show3();//静态成员方法
    }
}

2、static变量的特点

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量所有的对象共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static成员变量的初始化顺序按照定义的顺序进行初始化。static是不允许用来修饰局部变量,无论在静态方法,还是在非静态方法中static都不允许用来修饰局部变量

static变量的特点

public class Student  {
    public String name;//姓名
    public int age; //年龄
    public static  String university;//学校
    public static  String address;//地址

    public void show(){
        System.out.println("name="+ name +"," + "age="+ age +"," + "university="+ university +"," +"address="+address);
    }
}
public class ExtendsDemo {
    public static void main(String[] args) {
        Student.university = "传智大学";
        Student s =  new Student();
        s.name="小扬";
        s.age = 18;
        s.address ="成都";
        s.show();
        System.out.println("------------------");

        Student s1 =  new Student();
        s1.name="小袁";
        s1.age = 18;
        s1.show();
    }
}

在S1对象中,没有给address赋值,在输出结果中,S1调用show()地址值也是成都。也说明static修饰成员变量,如果在某个对象中赋值,这个赋值结果被该类的所有对象共享。
一般static修饰成员变量修饰的成员变量,赋值用类名.成员变量名赋值,如Student.university = "传智大学";

上一篇 下一篇

猜你喜欢

热点阅读