zoukankan      html  css  js  c++  java
  • Java_静态变量

    class c1c {
        private static int num = 0;
        private static double pi = 3.14;
        private double radius;
        private int height;
        public c1c(double r,int h)
        {
            radius = r;
            height=h;
            num++;
        }
        public void count()
        {
            System.out.print("创建了"+num+"个对象");
        }
        double area() {
            return pi*radius*radius;
        }
        double volume() {
            return area()*height;
        }
    }
    public class cc{
        public static void main(String[] args)
        {
            c1c volu1=new c1c(2.5,5);
            volu1.count();
            System.out.println("圆柱1的体积="+volu1.volume());
            c1c volu2=new c1c(1.0,2);
            volu2.count();
            System.out.println("圆柱2的体积="+volu2.volume());
        }
    }

      本例中声明了一个静态变量num用于记录程序中共产生了多少个对象。

      因为对象创建时会自动调用构造方法,所以在构造方法中加入了“num++;”语句,这样每创建一个对象就调用一次构造方法,从而每产生一个对象,num的值就会自动加1 。

      此时,因为静态变量是一个公共的存储单元,所以类的任何一个对象去修改它时,都是在对同一个内存单元做操作。

    去掉声明num的static后

    private int num = 0;

    可以看到num的值没有变化,这是因为num成为实例变量后,对创建的不同对象来说,都有自己独立的内存来保存它的值,且不与其他对象共享,因此若修改了volu1的num值,volu2的num并不受影响。

  • 相关阅读:
    图论——拓扑排序
    BZOJ 2882 & 后缀数组的傻逼实现
    BZOJ 2626 & KDtree
    Colorado Potato Beetle(CF的某道) & 鬼畜宽搜
    Prime & 反素数plus
    BZOJ 2049 & LCT又一模板
    BZOJ2002 & LCT模板(分块不会搞)
    BZOJ2190 & 欧拉函数
    BZOJ 1053 & 反素数
    POJ2774 & 后缀数组模板题
  • 原文地址:https://www.cnblogs.com/sakuragi666/p/10835187.html
Copyright © 2011-2022 走看看