• java-static静态关键字


    static修饰成员属性作用:
    多个对象共享同一份数据,一旦用了static关键字。那么这样的内容不再属于自己,而是属于类,只在类中保存唯一一份,所有对象共享同一份。

    成员变量中static用法

    /*
    类的定义注意事项:
    成员变量是直接定义在类党总的,在方法外边
    成员方法不要写static关键字。
     */
    public class Student {
        private int id;//学号,不在构造方法中使用
    
        private String name;//姓名
    
        private int age;//年龄
    
        static String room;//教室
    
        private static int idCounter = 0; //计数器,自动生成学号使用
    
        public Student() {
            this.id = ++idCounter;
        }
    
    
        public Student(String name, int age) {
            this.id = ++idCounter;
            this.name = name;
            this.age = age;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public static String getRoom() {
            return room;
        }
    
        public static void setRoom(String room) {
            Student.room = room;
        }
    }
    
    //创建实例
    public class StaticDemo {
        public static void main(String[] args) {
            Student stu = new Student("李四",18);
            stu.room = "教室001";
            Student stu1 = new Student("张三",26);
            System.out.println("姓名:" + stu.getName() + "年龄:" + stu.getAge() +
                    "所在教室:" + stu.room + "学号:" + stu.getId());
            System.out.println("姓名:" + stu1.getName() + "年龄:" + stu1.getAge() +
                    "所在教室:" + stu1.room + "学号:" + stu1.getId());
        }
    }
    
    

    static修饰成员方法作用:
    一旦static修饰成员方法,那么这个方法不属于对象,而是属于类。
    如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。

    public class Student {
        public void eat(){
            System.out.println("普通方法!");
        }
        public static void staticMain(String[] args) {
            System.out.println("静态方法!");
        }
    }
    
    实例化使用方法:
    
    public class StudentDemo {
        public static void main(String[] args) {
            Student stu = new Student();
            stu.eat();//正确调用普通方法
            Student.staticMain();//正确调用静态方法
            staMain();//调用自己的静态方法,可以省略类名 完全等效于 StudentDemo.staMain
        }
    
        public static void staMain() {
            System.out.println("自己的方法");
        }
    }
    
    


    静态方法与静态变量的作用域:

    1. 静态方法可以直接访问静态成员变量。

    2. 静态方法不能访问非静态成员变量。(原因:非静态属于对象,而静态方法属于类)

    3. 静态方法当中不能使用this。因为静态方法是通过类调用,this仍然指的是对象。

    4. 普通方法可以访问所有的成员变量。

    static内存图:

    静态代码块:
    直接在类中用static声明

    1. 当第一次用到本类时,静态代码块执行唯一的一次。
    2. 静态的内容总是优先于非静态,所以静态代码块的内容先执行。
      静态代码块的典型用途:
      用来一次性对静态成员变量进行赋值。
    public class Phone {
        static {
            System.out.println("静态代码块启动!");
        }
        public Phone(){
            System.out.println("构造方法执行!");
        }
    }
    
    //实例化对象
    public class PhoneDemo {
        public static void main(String[] args) {
            Phone n1 = new Phone();
            Phone n2 = new Phone();
        }
    }
    

  • 相关阅读:
    关于javaScript substring()方法的一点点应用
    解决Vue报错:Invalid prop: type check failed for prop "id". Expected Number with value 14, got String with value "14".
    better-scroll滚动无效的查错
    Vue程序化导航---又称编程式导航
    Vue路由初始化Can't read prooerty '$createElement' of undefined
    在前台利用jquery对dom元素进行排序
    js/jquery如何获取获取父窗口的父窗口的元素
    jquery使鼠标滚轮暂时失效
    introJs写法
    用Intro.js创建站点分步指南
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/11699288.html
Copyright © 2020-2023  润新知