java中的静态变量和静态方法

1、java中变量分为静态变量和实例变量;带static关键字的为静态变量,不带static关键字的为实例变量

2、java中方法分为静态方法和实例方法;带static关键字的为静态方法,不带static关键字的为实例方法

静态变量和静态方法属于类,实例变量和实例方法属于对象。

例如

public class A {

	private int i = 0;
	
	public static int count = 20;
        
        public void test(){}

 }

如果这样访问:

A.i,这样是编译不通过的,因为实例变量(属性)属于对象,这样直接通过类A类访问,A会在包含类A的类信息的方法区内查找i变量,查找不到,而不会去堆内存里面去查找。同理A.test()。

另外,因为实例变量属于对象,用A.i访问,JVM不知道到底是访问哪个对象的i属性值,所以这样访问是非法的。


实例方法访问权限:

实例方法内可以调用静态方法和静态变量,可以调用实例变量和实例方法。


静态方法访问权限:

静态方法内不能调用实例方法和实例属性,可以调用静态变量和静态方法。


jvm只会为静态变量分配一次内存,在jvm加载类的时候就会完成对静态变量内存的分配;而实例变量,每次创建一个对象,就会分配一次内存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章