请问:静态变量在实际使用当中有有什么作用?还有课程里说,“直到该类被卸载才会进行资源回收”,这句话怎么理解?是不是当静态变量被重新赋值就是被卸载?
6 回答
静态变量又被称为类变量,是与类共生共灭的,如果你声明了一个对象,则对象也可以通过对象.静态变量 的方式使用这个静态变量,如果你不声明任何对象,这个静态变量也是存在的,使用 类名.静态变量 来使用.
而普通变量是不能直接使用 类名.变量名 来使用的!!!!
在实际的开发过程中,往往static静态变量被定义成常量final,用于各个对象间共享数据使用.
下面的代码,希望能帮到你,你可以执行以下看看:
package com.sellcar;
public class test5 {
static double Pi = 3.14;
double r =0;
public static void main(String[] args){
System.out.println("Static静态变量:" + test5.Pi);//没有声明任何对象,直接使用类名.静态变量名 来调用
//System.out.println("普通变量:" +test5.r); //普通变量使用 类名.静态变量名 调用时报错!!!
test5 t1 = new test5(1.2);
test5 t2 = new test5(1.8);
System.out.println("第一个对象的内容 : t1.r="+t1.r + " t1.Pi="+t1.Pi + " Static test5.Pi="+ test5.Pi );
System.out.println("第二个对象的内容 : t2.r="+t2.r + " t2.Pi="+t2.Pi + " Static test5.Pi="+ test5.Pi );
//某个对象对static变量修改值,则static值会对整个类和所有的对象改变
//普通变量被修改,则只有一个对象中的变量的值被修改,其他对象值不变
//static变量被修改,则所有对象中的static变量的值被修改!!!
t1.Pi = 5;
System.out.println("第一个对象的内容 : t1.r="+t1.r + " t1.Pi="+t1.Pi + " Static test5.Pi="+ test5.Pi );
System.out.println("第二个对象的内容 : t2.r="+t2.r + " t2.Pi="+t2.Pi + " Static test5.Pi="+ test5.Pi );
t2.Pi = 8;
System.out.println("第一个对象的内容 : t1.r="+t1.r + " t1.Pi="+t1.Pi + " Static test5.Pi="+ test5.Pi );
System.out.println("第二个对象的内容 : t2.r="+t2.r + " t2.Pi="+t2.Pi + " Static test5.Pi="+ test5.Pi );
test5.Pi =10;
System.out.println("第一个对象的内容 : t1.r="+t1.r + " t1.Pi="+t1.Pi + " Static test5.Pi="+ test5.Pi );
System.out.println("第二个对象的内容 : t2.r="+t2.r + " t2.Pi="+t2.Pi + " Static test5.Pi="+ test5.Pi );
}
public test5(double r){
this.r = r;
}
}输出结果:
Static静态变量:3.14
第一个对象的内容 : t1.r=1.2 t1.Pi=3.14 Static test5.Pi=3.14
第二个对象的内容 : t2.r=1.8 t2.Pi=3.14 Static test5.Pi=3.14
第一个对象的内容 : t1.r=1.2 t1.Pi=5.0 Static test5.Pi=5.0
第二个对象的内容 : t2.r=1.8 t2.Pi=5.0 Static test5.Pi=5.0
第一个对象的内容 : t1.r=1.2 t1.Pi=8.0 Static test5.Pi=8.0
第二个对象的内容 : t2.r=1.8 t2.Pi=8.0 Static test5.Pi=8.0
第一个对象的内容 : t1.r=1.2 t1.Pi=10.0 Static test5.Pi=10.0
第二个对象的内容 : t2.r=1.8 t2.Pi=10.0 Static test5.Pi=10.0
举报
0/150
提交
取消