说明:其中内容摘自:《Java程序员面试宝典》,这里仅供学习使用。
1. 变量命名有哪些规则?
只能有字母、数字、下划线和$组成,且必须由字母,下划线或$开头,不能是数字。
2. break,continue,return有什么区别??
- break用于直接跳出当前循环,不在执行剩余代码,如果实在内层循环中进行,则是跳出内层循环代码,不影响外层循环。
- continue用于停止当次循环,进入下一次循环,而不是跳出循环体本身,它只是中断一次循环而已。
- return是一个跳转语句,表示从一个方法体中放回。
如何跳出外层循环?可以使用带表示的break语句,或者设置一个标识变量,多次执行break语句。
3. final,finally和finalize有什么区别?
- final用于声明属性,方法和类,表示属性不可变,方法不可覆盖,类不可被继承。被final修饰的变量不可变,指的是引用不可变。因此final修饰的变量在定义的同时必须进行初始化。
- finally为异常处理中的一部分,只能用于try catch语句中,finally修饰的代码块中的语句一定被执行,常用于释放资源的情况。
- finalize是Object类中的一个方法,在垃圾回收执行时调用被回收对象的finalize方法,可以覆盖此方法对其他资源进行回收,例如关闭文件等。但需要注意的是,一旦垃圾回收器准备好释放对象的空间,将首先调用器finalize方法,并在下一次垃圾回收动作发生时,才会真正的回收对象的内存。
4. assert有什么作用?
断言是一种程序调试的方法,提供了一种在代码中进行正确性检查的机制。主要用于保证程序的正确性,通过在程序开发和测试中使用。具有两种形式:
assert expression1
assert experssion1: expression2
expression1表示一个boolean表达式,expression2表示一个基本数据类型或一个对象。
public class Test {
public static void main(String[] args) {
assert 1 + 1 == 2;
System.out.println("assert 1 ok!");
assert 1 + 1 == 3 : "assert failed, exit!"
System.out.println("assert 2 ok");
}
}
5. static的关键字有哪些作用?
- 为特定数据类型或对象分配单一的存储空间
- 实现某个方法或属性与类而不是对象关联在一起,可以在不创建对象的情况下通过类直接调用方法或使用类的属性。
static有四个使用情况:
- 静态变量。全局变量的作用。
- 静态成员方法。不能调用非static方法,同时非static方法也不能调用static方法。
- 静态代码块。在类加载的时候执行,且仅执行一次。
- 静态内部类。不依赖于外部类实例对象而被实例化,不能与外部类具有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员变量和方法(包括private的类型)。
6. 使用switch时有哪些注意事项?
switch语句由于多分支控制,在使用switch(expr)时,expr只能是一个枚举变量,或一个整数表达式(int或Integer都可以),由于Java中byte,short和char类型都被隐式的转换为int类型,因此expr可以为byte,short,int,char类型。
在Java7中,可以支持了String类型。
7. volatile有什么作用?
volatile是一个类型修饰符,它用来修饰被不同线程访问和修改的变量。被volatile修饰的变量,系统每次用它都是直接从内存中读取,而不是利用缓存(能加快速度,但有可能导致数据不一致)。在使用了volatile修饰成员变量后,所有线程在任何时候所看到的变量的值都是一致的。
public class MyThread inplements Runnable {
private volatile boolean flag;
public void stop() {
flag = false;
}
public void run() {
while(flag) {
; // do something
}
}
}
以上代码示例常用于停止线程,如果boolean类型的变量flag没有被声明为volatile,那么,将线程的run方法中在判断flag时,使用的就有可能为缓存中的值,此时就不能及时的停止该线程。
8. instanceof 有什么作用?
instanceof为java中的一个二元运算符,它的作用为判断一个引用变量所指向的对象是否为一个类(接口,抽象类,父类)的实例,返回一个boolean类型的值。
public class Test {
public static void main(String[] args) {
String s = "hello";
int[] a = {1, 2};
if (s instanceof String)
System.out.println("true");
if (s instanceof Object)
System.out.println("true");
if (a instanceof int[])
System.out.println("true");
}
}
9. strictfp有什么作用?
strictcp(strict float point),即精确浮点,用来保证浮点类型的运行在不同硬件平台上的准确性。一旦一个类被strictfp修饰,所有的方法都会被strictfp修饰。