文章目录
三.关键字
3.1 变量命名有哪些规则
- 由数字,字母,_,$组成,且开头不能是数字
3.2 break,continue,return 有什么区别
- break:跳出当前循环
- continue:跳出本次循环
- return:从一个方法返回
3.3 final,finally和finalize有什么区别
- final:用于修饰属性,方法,类,分别表示属性不可变(针对引用类型的属性指的是引用不可变,但对象中的数据可以变),方法不可覆盖,类不可继承
- final成员变量必须初始化
- 定义时初始化
- final成员变量可以在初始化块中初始化,打不能在静态初始化块中初始化
- 静态final成员变量可以在静态初始化块中初始化,但不能在初始化块中初始化
- 在构造器中初始化,但静态final变量不能在构造器中初始化
- final类(如String,StringBuffer)
- 不能继承,所有方法不能重写
- final类的成员变量可以改变
- 一个类不能被final和abstract同时修饰
- final成员变量必须初始化
- finally作为异常处理的一部分,表示这段语句最终一定会执行,经常用于释放资源
- finalize是Object的一个方法,垃圾回收器执行时会调用被回收对象的finalize方法
3.4 assert(断言)有什么作用
- 一种软件调试方法,assert 表达式 ,若表达式为true正常运行,若false,则说明程序已经处于一种不正确的状态,系统需要提供告警信息并退出程序,同参在程序开发和测试时使用。
3.5 static关键字有哪些作用
- 主要有两个作用:一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关,二:实现某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下也可以使用方法或属性。具体而言使用static有四种情况:成员变量,成员方法,代码块,内部类
- static成员变量
- java中没有全局变量的概念,但可以通过static实现全局的效果,实例变量属于对象,对象创建后才为其开辟空间,静态变量属于类,类加载时就被分配了空间,可直接通过(类.静态变量)使用。
- 静态变量只有一份,不会随对象的多少发生改变,所有对象共享其静态变量
- static成员方法
- 普通方法归属于对象,通过对象.方法调用,静态方法归属于类,通过类名.方法调用
- 静态方法中不能使用this,super关键字,只能使用静态变量或方法(因为此时可能还没有创建对象)
- static有个重要的作用就是实现单例,将构造器声明为private的,在提供一个可获得对象的静态方法,可确保在程序运行时,该类的实例只有一份
- public static的变量和方法本质上是全局的,若使用private static则表示在该类的静态代码块或类的静态方法中可以调用,不能在其他地方调用
- static代码块
- jvm加载类时会执行静态代码块,若有多个,按顺序执行,且只会执行一次,常用来初始化静态变量
- static内部类
- 可以不依赖外部实例而实例化
- 只能调用静态变量或静态方法
- 引申
- static final修饰变量表示全局常量,一旦赋值不可修改,static final修饰方法表示该方法不可覆盖,且可通过类名访问
3.6 使用switch时有哪些注意事项
- 使用switch(expr)时,expre只能是一个枚举常量或一个整数表达式,不能是浮点类型的数据,jdk7以后expre也可以是String类型的
- case后一定不能跟变量,或带有变量的表达式(final修饰的可以)
- case子句一般跟break配合,若没有break,程序会将符合条件的case,包括之下的case语句
3.7 volatile有什么作用
- 为了提高运行效率,编译器会自动对其优化,将经常被访问到的数据缓存起来,但这样会带来线程安全问题,比如一个线程修改了数据,但缓存中没有即时对应修改,就会造成后来访问该数据的线程读到错误数据,使用volatile可以阻止数据进行缓存,保证线程安全
- 但这样做会影响性能,能不用就不用
3.8 instanceof有什么作用
- 判断一个引用类型变量所指的对象是否是一个类(或接口、抽象类、父类)的实例