java-static 绝地灬酷狼 2021-10-29 08:54 253阅读 0赞 1.static是Java中的一个关键字,单词本身是静态的含义 2.使用static修饰的成员成为静态成员,是属于某个类的;而不使用static修饰的成员成为实例成员,是属于类的每个对象的。 3.一个类的成员包括:成员变量,成员方法,构造方法,代码块,内部类·; static可以修饰除了构造方法之外的成员(成员变量,成员方法,,代码块,内部类·); 一一说明 1.static修饰成员变量 static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。 static变量和非static变量都是成员变量,这是共同点,区别主要有: 1).在内存中份数不同 不管有多少个对象,static变量只有1份。对于每个对象,实例变量都会有单独的一份 *非static变量好比是水杯,1个学生1个;static变量好比是饮水机,大家共享* 2.在内存中存放的位置不同 静态变量存在方法区中, 实例变量存在堆内存中 3.访问的方式不同 实例变量: 对象名.变量名 静态变量:对象名.变量名,不推荐如此使用;类名.变量名,推荐使用 4.在内存中分配空间的时间不同 实例变量:创建对象的时候才分配了空间。 静态变量:第一次加载类的时候; 2.static修饰成员方法 可以通过对象名.方法名和类名.方法名两种方式来访问 ). 1.static变量 ). 2.static方法 总结1:static方法的作用 访问static变量和static方法 总结2:static方法的调用方式 1.通过类名调用 Student.showClassRoom(); 推荐该方式 2.通过对象名访问 stu1.showClassRoom(); 总结3:不可以 静态方法中不可以访问非静态变量 静态方法中不可以访问非静态方法 静态方法中不可以访问this 理解:加载类的时候就加载静态变量和静态方法,此时可能还没有创建对象,所以非静态变量和非静态的方法还没有分配空间, 无法访问 总结4:可以 非静态方法中可以访问静态变量 非静态方法中可以访问静态方法 非静态方法中可以访问this 理解:加载类的时候就已经加载静态变量和静态方法,创建对象后,非静态变量和非静态的方法才分配空间, 此时静态变量和静态方法已经存在,可以访问 3.static修饰代码块 ).1.static变量 ).2.static方法 ).3.static代码块 总结1:代码块 1.位置:类中 2.数量:多个 3.执行顺序:依次执行 4.执行时间:每次创建对象的时候都执行;先执行代码块,再执行构造方法 5.作用:实际开发中很少用; 可以将各个构造方法中公共的代码提取到代码块 匿名内部类不能提供构造方法,此时初始化操作放到代码块中 总结2:static代码块 1.位置:类中 2.数量:多个 3.执行顺序:依次执行 4.执行时间:第一次加载类的时候执行,只执行一次 5.作用:给静态变量赋初始值 实际开发中使用比较多,一般用于执行一些全局性的初始化操作 1.创建工厂 2.加载数据库初始信息 ..... 总结3:一个类的成员 三大成员 1.成员变量(非静态、静态的) 2.成员方法(非静态、静态的) 3.构造方法(全部都是非静态的) 三小成员 4.代码块 5.静态代码块 \* 6.内部类(非静态的,静态的) 4.static修饰内部类 属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员 5.静态导入 import static java.lang.Math.\*; 非导入类和接口,而是导入类和接口的静态成员 转载于:https://www.cnblogs.com/zimo-bwl1029-s/p/11272486.html
还没有评论,来说两句吧...