zoukankan      html  css  js  c++  java
  • 类成员:

    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、有可能出现类成员已经初始化,而实例成员还未初始化的情况,如果这时候类成员访问实例成员,会报错

  • 相关阅读:
    vagrant 入门3
    vagrant 入门4
    vagrant 入门2
    Map、Debug追踪
    Comparator比较器 、Comparable接口
    File类
    Lambda表达式、函数式编程思想概述
    异常--异常体系、异常的处理、异常的捕获、finally语句块和自定义异常
    List集合、Set集合、Collection集合工具类
    数据结构---栈、队列、数组、链表和红黑树
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8065961.html
Copyright © 2011-2022 走看看