一、static关键字
static最主要的作用就是在不用创建对象的情况下既可以调用类的成员变量或者成员方法。有以下几点需要注意:
- static修饰的变量或者方法属于类而不是某个对象
- static变量在内存里只有一个副本,为所以调用者共享
- static方法不能调用非static的变量或者方法,并且其内不能使用this关键字
- static代码块可以集中初始化成员变量,优化性能
- static修饰的变量或者代码块是在类加载的时候进行的初始化。
- 遇到new、getstatic、putstatic或者invokestatic这4条字节码指令时,如果类没有进行初始化,则需要首先触发初始化。而这四条指令常见的scenarios:使用new关键字实例化对象、读取或者设置一个类的静态字段、调用一个类的静态方法。
- 使用java.lang.reflect包的方法对类进行反射调用的时候。
- 初始化一个类的时候,如果发现其父类还没有初始化,则先初始化父类
- 当虚拟机启动时,用户需要指定一个要执行的主类(包含main方法的那个类),虚拟机会先初始化这个类。
- 当使用JDK 1.7动态语言支持时
二、final关键字
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
- final类,表示该类不能被继承
- final方法,表示该方法不能被override
- final变量,对于基本数据类型来说,表示不能更改其值;对引用类型来说,表示引用不变(引用的指向不变),但是引用的对象的内容是可以变的(指向的内存地址中的内容是可以变的),必须在定义的时候初始化或者在构造器里初始化。
- final局部变量,必须保证使用前必须初始化
- final修饰方法参数的目的是防止修改这个参数的值,同时也是一种声明和约定,强调这个参数是不可变的
三、this关键字
在Java中,this代表指向当前对象的一个引用。
- this(参数列表),调用当前类的其它构造方法,并且只能在构造方法的第一行使用。
- this在参数名和成员变量名重名的时候,用来区分变量
- 不能再static环境中使用,包括static方法和代码块
四、super关键字
super往往涉及继承,用来访问父类的与子类的重名的方法、成员变量、构造方法。
- super(参数列表)调用基类的构造方法,必须在子类构造方法的第一行,因此super(参数)和this(参数)只能出现一个
- 父类中没有无参的默认构造方法时,子类必须 显示的调用super(参数列表)
- super同样不能用于static方法或者代码块中
本文详细解释了Java中的static、final、this和super四个关键字的用法和特性,包括它们的语法、应用场景以及注意事项。
2236

被折叠的 条评论
为什么被折叠?



