美文网首页
Java中static修饰成员变量

Java中static修饰成员变量

作者: 山坡上的斐德洛 | 来源:发表于2018-12-06 21:54 被阅读0次
    /*
    * static修饰成员方法
    *
    * 格式:
    *   权限修饰符 static 返回值类型 方法名(形式参数列表){
    *       // 方法体;
    *   }
    *
    * 【重点】
    *   用static修饰的成员方法,称之为【静态成员方法】,这个【静态成员方法】是早于对象的创建而【加载】
    *   对象销毁之后仍然存在
    *
    *   所以说:【静态成员方法】和对象“无关”
    *
    *   如果采用类对象调用【静态成员方法】会报警告
    *   应该直接使用静态的方式来调用
    *
    * 【注意事项】
    *   1. 在静态方法中不能用this关键字
    *       推论:
    *           因为【静态成员方法】可以通过类名来调用,用雷鸣调用的情况下,是不存在对象的,而this关键字
    *           是用来表示调用该方法的对象关键字,这里不存在对象,所以不能用。
    *       【没有对象】
    *
    *   2. 在static修饰的【静态成员方法】中,不能使用【非静态成员变量】,因为【非静态成员变量】是保存在类对象
    *   的【堆区】内存中,和类对象共存,而在【静态成员方法】的调用过程中是没有对象的,所以不能使用【非静态成员变量】
    *
    *   3. 想在【静态成员方法】中使用非静态成员变量
    *       在当前【静态成员方法】中使用new关键字,调用构造方法,创建一个对象,使用该对象,
    *        案例:
    *           单例设计模式
    * 【总结】
    *   静态对静态,非静态对非静态
    *
    * 【静态成员方法用途】
    *   1. 调用方便
    *   2. 用来完成一些【工具类】
    *   
    * */
    
    class Dog{
        // 成员变量
        private String name;
        // 静态成员变量
        static String country = "JP";
    
        // 构造方法
        public Dog(){}
        public Dog(String name){
            this.name = name;   // JSP
        }
        // setter 和 getter方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        // 成员方法
        public void run(){
            this.name = "110";  // 使用this关键字调用非静态成员变量
            name = "112";   // 非静态成员变量
            country = "Janp"; // 静态成员变量
    
            System.out.println("跑来跑去");
        }
        public static void sleep(){
            country = "RB";    // 静态成员变量
    //        name = "003";   // 这个会报错
            System.out.println("睡大觉");
        }
    
        // 在静态方法中创建对象
        public static void test(){
            Dog dog = new Dog("狗子");
    
            System.out.println(dog.name);
        }
    }
    
    public class static修饰成员方法 {
        public static void main(String[] args) {
            Dog dog = new Dog("Bobo");
    
    //        dog.sleep();  // 这个出现警告
            Dog.sleep();    // 推荐使用这种方式进行调用
        }
    }
    

    相关文章

      网友评论

          本文标题:Java中static修饰成员变量

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