zoukankan      html  css  js  c++  java
  • 【Java】用 static 修饰变量时应该注意的问题

    1.使用 static 修饰的变量由该类的全体对象共享

    public class TestStatic {
        static int a;
        
        public void setA(int a) {
            this.a = a;
        }
        
        public void printA() {
            System.out.println(a);
        }
        
        public static void main(String[] args) {
            TestStatic t1 = new TestStatic();
            t1.setA(10);
            t1.printA();
            
            TestStatic t2 = new TestStatic();
            t2.printA();
        }
    }

    输出结果

    10
    10

    t1 中我们把静态变量 a 的值设为了 10,在 t2 中并没有对 a 进行任何操作

    我们可以清楚的看到被 static 修饰的变量是被该类的全体对象所共享的

    2.在子类中如果没有重新定义继承自父类的静态变量,那么子类和父类共享同一个静态变量

    (1)没有在子类重新定义静态变量 a

    public class TestStatic2 extends Father{
        public static void main(String[] args) {
            a++;
            System.out.println(a);
        }
    }
    
    class Father{
        static int a = 10;
    }

    输出结果

    11

    (2)在子类中重新定义静态变量 a

    public class TestStatic2 extends Father{
        static int a = 5;
        public static void main(String[] args) {
            a++;
            System.out.println(a);
        }
    }
    
    class Father{
        static int a = 10;
    }

    输出结果

    6

    我们可以看到

    static 修饰的变量,在子类中如果没有重新定义继承自父类的静态变量,那么子类和父类共享同一个静态变量

  • 相关阅读:
    PHP语句、函数及字符串处理
    JAVA代码 运算符
    utf-8
    ascii码对照表
    什么是数组
    教你如何---构建良好的windows程序(初学者必看) (转)
    代码
    Android课程---Android Studio简单设置
    Android课程---Android Studio使用小技巧:提取方法代码片段
    Android课程---Android Studio的一些小技巧
  • 原文地址:https://www.cnblogs.com/syxy/p/10040615.html
Copyright © 2011-2022 走看看