学习笔记:仅static访问特点
目录
1、static修饰的方法访问特点
2、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 = "传智大学";