美文网首页
Java中的static修饰成员方法

Java中的static修饰成员方法

作者: 山坡上的斐德洛 | 来源:发表于2018-12-06 21:29 被阅读0次
    /*
    * 问题:
    *   当创建多个Person类时,如果人的国家都是中国,那么这个会占用大量
    *   内存,country变量存在大量重复,所以这里要使用static修饰
    *
    * static关键字的使用:
    *   1【重点】.  如果使用static修饰的成员变量,这些成员称之为【静态成员变量】,
    *       这个【静态成员变量】实际存放的内存空间在【内存数据区】。【静态成员变量】
    *       和当前【类对象的内存】没有任何关系,这个【静态成员变量】的内存空间不在【堆区】
    *       对象内存中
    *
    *   2.  用static修饰的成员变量,这个【静态成员变量】可以提供给多个类对象使用
    *
    *   3.  什么时候使用static, 真正意义上存在大量重复,并且存在一定共享基础的数据。这种
    *       情况下,可以使用static修饰
    *
    * 发现:
    *   发现通过类对象来调用【静态成员变量】,报警告
    *   用static修饰【静态成员变量】应该用【静态】的方式访问
    *
    * 【重点】
    *   用static修饰的成员变量,这个成员变量会【早于】类对象的创建而创建,而且【晚于】类对象
    *   的销毁而销毁。
    *   所以用static修饰的【静态成员变量】是和类对象“无关的”
    *
    *   严格来说
    *       类对象和【静态成员变量】无关,那么调用类对象来调用【静态成员变量】是“非法的”
    *       java期望的是,使用更加严谨的调用方式。
    *
    * 【推荐调用/使用成员变量的方式】
    *   类名.成员变量;
    * */
    
    class Person{
        // 成员变量, 内存一般是放到堆区的
        private String name;
        // 这里是用static修饰的成员变量,内存就放到了数据区
        static String country = "中国";
    
        public Person(){}
        public Person(String name){
            this.name = name;
        }
    
        // getter和setter方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    
    public class learn_static {
        public static void main(String[] args) {
            Person p1 = new Person("叶问");
    
            Person p2 = new Person("陈华顺");
    
            Person p3 = new Person("陈真");
    
            Person p4 = new Person("李云龙");
    
            System.out.println("p1.country: " + p1.country);
            System.out.println("p1.country: " + p2.country);
    
            // 这个调用方式报警告了
    //        p3.country = "People Republic of China";
            // 推荐使用这个方式调用
            Person.country = "People Republic of China";
    
            System.out.println("p1.country: " + p3.country);
            System.out.println("p1.country: " + p4.country);
    
    
        }
    }
    

    相关文章

      网友评论

          本文标题:Java中的static修饰成员方法

          本文链接:https://www.haomeiwen.com/subject/awsacqtx.html