• 类成员:


    1、static关键字修饰的成员就是类成员

    2、类成员包括:类变量、类方法、静态初始化块,三部分

    3、static关键字不能修饰构造器

    4、static关键字修饰的类成员属于整个类,不属于单个实例

    5、类变量生命周期:类初始化完成,类变量也被初始化完成,直到类被卸载,类变量占的内存才被当做垃圾回收,类变量的生存范围与类的生存范围一致

    6、类变量可以通过类来访问,也可以通过类的对象来访问,但通过类的对象来访问时,实际上并不是访问该对象所拥有的变量,因为系统创建该类的对象时,不会为该对象分配类变量的内存,也不会再次为该类变量初始化

      也就是说类的对象根本不会拥有该类的类变量

    7、通过类对象来访问类的变量其实是一种假象:

      7.1、通过类的对象访问的类变量依然是该类的类变量

      7.2、当通过对象来访问类变量时,系统会在底层转换为通过类来访问类变量

    8、很多语言都不允许通过类对象来访问类变量,类变量都要通过类来访问

    代码示例:

    public class NullAccessStatic{
    	private static void test(){
    		System.out.println("不通过类对象来访问类方法");
    	}
    	
    	public static void main(String[] args){
    		NullAccessStatic sta =null;
    		//-不通过类对象,一样访问类方法:
    		sta.test();
    	}
    }
    

     运行结果:

    总结:

    1、当用实例来访问类成员时,实际上依然是委托该类来访问类成员

    2、因此即使某个实例为null,也可以访问它所属类的类成员

    对static关键字而言,几条重要的规则:

    1、类成员不能访问实例成员:类成员属于类,类成员作用域比实例成员要大

    2、有可能出现类成员已经初始化,而实例成员还未初始化的情况,如果这时候类成员访问实例成员,会报错

  • 相关阅读:
    11月21日
    11月20日
    11月19日
    11月18日
    11月17日
    11月15日
    图文教程:在Mac上搭建Titanium的iOS开发环境
    经验
    IT术语的正确读法
    NSLog( @"%@", i );
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8065961.html
Copyright © 2020-2023  润新知