Java关键字小记


本篇是Java关键字的一个小总结

static,final,abstract,extends,throw,throws,volatile等

Static

static翻译为静态的

可以修饰①类②变量③方法④导入一个包⑤代码块

静态内部类

在java中如果一个类被声明为静态的,那么只有一种情况,即这个类是内部类,外部类不能被声明为静态的。

  1. 静态内部类只能访问静态的成员变量和方法,不能访问非静态的方法和属性。
  2. 静态内部类可以声明普通成员和方法,而普通内部类不能声明静态成员和方法。
  3. 静态内部类可以单独初始化。

静态内部类使用场景一般是当外部类需要使用内部类,而内部类无需外部类资源,并且内部类可以单独创建的时候会考虑采用静态内部类的设计。

静态变量和方法

当一个变量或方法被static修饰的时候,那么这个变量或方法是属于这个类的,相当于这个类的一部分。

修改这个变量将会影响所有引用它的地方

导包
import static java.lang.Math.*;

那么当我们用Math下的所有函数是时可以直接使用,而不用去Math.max()来调用这个max静态方法。

例如

int max = max(1, 2);
静态代码块
static{
	//write code..
}

静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;

final

final意为最终的,不可修改的。

用来修饰数据

包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。更重要的是,final会告诉编译器,这个数据是不会修改的,那么编译器就可能会在编译时期就对该数据进行替换甚至执行计算,这样可以对我们的程序起到一点优化。对于static类型变量在这个阶段会为其赋值为默认值,比如public static int v=5,在这个阶段会为其赋值为v=0。而对于static final类型的变量,比如public static final int v=5,在这个阶段会为其赋值为v=5在准备阶段就会被赋值为正确的值

public class FinalTest {

    /* ... */

    public void finalFunc(final int i, final Value value) {
        // i = 5; 不能改变i的值
        // v = new Value(); 不能改变v的值
        value.v = 5; // 可以改变引用对象的值
    }
}
用来修饰方法参数

表示在变量的生存期中它的值不能被改变;

修饰方法

表示该方法无法被重写;

修饰类

表示该类无法被继承。

abstract

abstract可以修饰类和方法

abstract类
  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

abstract方法
  1. 抽象方法只包含一个方法名,而没有方法体。抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
  2. 继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。
extends

这个关键字大家都非常了解了,这里想表达的一点是接口也可以被继承,第一反应肯定是接口怎么能被继承呢?

但是接口确实是可以被接口继承的。

throw和throws

throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。用在方法声明后面,跟的是异常类名,可以跟多个异常类名,用逗号隔开,表示抛出异常,由该方法的调用者来处理,throws表示出现异常的一种可能性,并不一定会发生这些异常。

throw:则是用来抛出一个具体的异常类型。用在方法体内,跟的是异常对象名,只能抛出一个异常对象名,表示抛出异常,由方法体内的语句处理,throw则是抛出了异常,执行throw则一定抛出了某种异常。

public static void throwChecked(int a) throws Exception{
    if (a > 0){
        //自行抛出Exception异常
        //该代码必须处于try块里,或处于带throws声明的方法中
        throw new Exception("a的值大于0,不符合要求");
   }
}
volatile
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值