Java中几个关键字 static final this super

本文详细解释了Java中的static、final、this和super四个关键字的用法和特性,包括它们的语法、应用场景以及注意事项。

一、static关键字

static最主要的作用就是在不用创建对象的情况下既可以调用类的成员变量或者成员方法。有以下几点需要注意:

  1. static修饰的变量或者方法属于类而不是某个对象
  2. static变量在内存里只有一个副本,为所以调用者共享
  3. static方法不能调用非static的变量或者方法,并且其内不能使用this关键字
  4. static代码块可以集中初始化成员变量,优化性能
  5. static修饰的变量或者代码块是在类加载的时候进行的初始化。
说到初始化就要提类加载机制。类的生命周期包括:加载-->验证-->准备-->解析-->初始化-->使用-->卸载。虚拟机规范里规定了有且只有5中情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始)

  1. 遇到new、getstatic、putstatic或者invokestatic这4条字节码指令时,如果类没有进行初始化,则需要首先触发初始化。而这四条指令常见的scenarios:使用new关键字实例化对象、读取或者设置一个类的静态字段、调用一个类的静态方法。
  2. 使用java.lang.reflect包的方法对类进行反射调用的时候。
  3. 初始化一个类的时候,如果发现其父类还没有初始化,则先初始化父类
  4. 当虚拟机启动时,用户需要指定一个要执行的主类(包含main方法的那个类),虚拟机会先初始化这个类。
  5. 当使用JDK 1.7动态语言支持时
首先static是在加载的时候执行的,因此当有继承存在时的初始化过程:父类静态变量和静态代码块(与声明或者定义的顺序相关,谁前谁先)--->子类的静态变量和静态代码块(同与声明或者定义的顺序相关)--->父类的普通成员变量-->父类的构造方法--->子类的普通成员变量--->子类的构造方法

二、final关键字

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

  1. final类,表示该类不能被继承
  2. final方法,表示该方法不能被override
  3. final变量,对于基本数据类型来说,表示不能更改其值;对引用类型来说,表示引用不变(引用的指向不变),但是引用的对象的内容是可以变的(指向的内存地址中的内容是可以变的),必须在定义的时候初始化或者在构造器里初始化。
  4. final局部变量,必须保证使用前必须初始化
  5. final修饰方法参数的目的是防止修改这个参数的值,同时也是一种声明和约定,强调这个参数是不可变的

三、this关键字

在Java中,this代表指向当前对象的一个引用。

  1. this(参数列表),调用当前类的其它构造方法,并且只能在构造方法的第一行使用。
  2. this在参数名和成员变量名重名的时候,用来区分变量
  3. 不能再static环境中使用,包括static方法和代码块

四、super关键字

super往往涉及继承,用来访问父类的与子类的重名的方法、成员变量、构造方法。

  1. super(参数列表)调用基类的构造方法,必须在子类构造方法的第一行,因此super(参数)和this(参数)只能出现一个
  2. 父类中没有无参的默认构造方法时,子类必须 显示的调用super(参数列表)
  3. super同样不能用于static方法或者代码块中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值