1、static概念
(1)static 关键字是静态的意思,可以修饰成员方法,成员变量
(2)static 修饰的特点
① 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件。
② 可以通过类名调用,当然,也可以通过对象名调用,不过推荐使用类名调用。
2、代码实现
(1)Student类
public class Student {
public static int age = 20;
public static void show(){
System.out.println(age);
}
}
(2)Test类
public class Test {
public static void main(String[] args) {
Student s = new Student();
//通过类名访问成员变量
Student.age = 200;
//通过对象名访问成员变量
s.age =100;
//通过类名访问成员方法
Student.show();
//通过对象名访问成员方法
s.show();
}
}
(3)运行结果
3、static访问特点
3.1 代码实现
public class Student {
public static int age = 20;
public String name ="张三";
public static void show1(){
System.out.println(age);
System.out.println(name);
}
public void show2(){
System.out.println(age);
System.out.println(name);
}
}
上面的代码会有下图报错
原因是在静态方法里面访问了非静态的成员变量。
3.2 访问特点
(1)非静态的成员方法
① 能访问静态和非静态的成员变量、成员方法
(2)静态的成员方法
① 只能访问静态的成员变量和成员方法
总结成一句话就是:静态成员方法只能访问静态成员(包括变量和方法)。
为什么静态成员方法只能访问静态成员(包括变量和方法)?答案是,静态的内容是随着类的加载而加载,所以当类加载时,静态成员(包括变量和方法)是先进入内存的,而此时的非静态成员(包括变量和方法)是不在内存里的,因此静态成员方法如果想访问其它非静态成员(包括变量和方法)是访问不了的。
4、静态方法和实例方法的区别,参考 Java 中的 static:静态变量、静态方法,一切都在掌握中_java静态方法里的变量-CSDN博客
(1)关联性:静态方法与类本身相关,而实例方法与类的实例相关。
(2)调用方式:静态方法可以通过类名和对象实例调用,而实例方法只能通过对象实例来调用。
(3)访问权限:静态方法可以访问类的静态成员,但不能访问非静态成员(实例成员)。实例方法可以访问类的静态和非静态成员。
(4)内部引用:静态方法中不能使用this关键字,因为它没有当前对象的引用。实例方法可以使用this来引用当前对象。
(5)生命周期:静态方法在类加载时初始化,而实例方法在对象创建时初始化。
本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!
创作不易,如果对你有点帮助的话麻烦点个赞支持一下!
新手小白,欢迎留言指正!