静态变量和实例变量的区别
in Java知识速查 with 0 comment

静态变量和实例变量的区别

in Java知识速查 with 0 comment

应知

静态变量:是被static关键字修饰的变量,称为静态变量或者类变量,另一种没有被static修饰的对象称为实例变量。

一个小测试


    class StaticDemo {
     static int x;   //静态变量 x   
     int y;   //实例变量 y   
     static public int getX(){  
         return x;  
         }   
     static public void setX(int newX){  
         x = newX;  
         } 
     public  int  getY() {
         return  y;  
         }  
     public void setY(int newY) {    
         y = newY;  
         } 
     }
public class ShowDemo {  
    public static void main(String[] args) {     
        System.out.println("静态变量 x="+StaticDemo.getX());   
    //    System.out.println("实例变量 y="+StaticDemo.getY());// 非法,编译时将出错 //why     
        StaticDemo a= new StaticDemo();     
        StaticDemo b= new StaticDemo();    
        a.setX(1);   
        a.setY(2);    
        b.setX(3);    
        b.setY(4);    
        System.out.println("静态变量 a.x="+a.getX());   
        System.out.println("实例变量 a.y="+a.getY());   
        System.out.println("静态变量 b.x="+b.getX());    
        System.out.println("实例变量 b.y="+b.getY());  
        } 
    
}

运行结果截图

456.jpg

解释说明

static的变量,所有类的实例对象共用一个,是独一无二的,(所以我们可以利用static的变量或者方法来跟踪一个类)如果在某一个对象中更改了这个static的变量,那么在其他的对象中调用这个变量时依然是更改过的值。
其生命周期是和类一样的。
而非静态的变量不是这样,他是随着这个对象的创建而创建的,因此它的生命周期是和这个对象一样的。因为,对于普通的变量来说,就是每一个对象都有“一份”这个变量。

Responses