请问:静态变量在实际使用当中有有什么作用?还有课程里说,“直到该类被卸载才会进行资源回收”,这句话怎么理解?是不是当静态变量被重新赋值就是被卸载?
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
提交
取消