文档介绍:Java 笔试经典(基础部分及答案和分析) 1 、一个".java" 源文件中是否可以包括多个类(不是内部类) ?有什么限制? 7 答: 可以包括多个类,但是最多只能有一个 public 修饰的类。 2、 Java 有没有 goto? 7 答: java 中有 goto , 但只是保留字,用来兼容以前版本的再无其他用途。 3 、说说&和&& 的区别。 8 答:& 是按位与, 左右两边同时为 1 这得 1, 其他情况都为 0,而&& 是逻辑与, 左右两边都为 true 这结果为 true 否则为 false ,并且&& 会发生短路,而& 不会发生短路 4 、在 JAVA 中如何跳出当前的多重嵌套循环? 8 答:有两种方法: ①在循环体中 boolean 值和 break 搭配使用; ②使用 continue 和 brea k 对应的标识,运行到 bcontinue 或 break 处时跳出到对应标识处 5、 switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?9 答: switch 语句是使用 int 型和枚举型的, 而精度比 int 型低的 byte char short 都可以转化成 int 型,所以 byte 是可以用在 switch 上的,但是系统不会将 long 型的转化成 int 型,所以不能使用 long. 而 String 是个类, 而不是基本数据类型, 系统也不会自动将 String 转化成 int 的。 6、 short s1= 1; s1= s1+ 1; 有什么错? short s1= 1; s1 += 1; 有什么错?9 答:前一个错了, s1=s1+1 处 s1+1 会使 short 型 s1 转化成 int 型,但是在将 int 型的值赋给 short 型的变量将会报错。后一个是对的, 因为+= 是一个复合型运算符, 复合赋值运算符会自动地将运算结果转型为其左操作数的类型,不会对 s1 的类型进行改变。 7、 char 型变量中能不能存贮一个中文汉字? 为什么?9 答: char 型的变量可以存贮一个中文字。应为 Java 是用 Unicode 来编码的,而 Unicod e 编码是用 16 个字节来存贮 char 型的变量的,而一个汉字正好是用 16 个字节来存储的,所以可以。 8 、用最有效率的方法算出 2 乘以 8 等於几?9 答: 2<<3 ,将 2 左移 3 位。因为位运算是 cpu 直接运算的,所以效率最高。 9 、请设计一个一百亿的计算器 9 答: 10 、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 答: final 关键字修饰一个变量是引用不能变,引用的对象还是可以改变的。如: StringBuffer stb=new StringBuffer( “ abc ”); S tb=new StringBuffer( “ bcd ”);// 会报错。但是运行 ( “ abdeae ”); 不会报错。 11 、"==" 和 equals 方法究竟有什么区别? 11 答:== 是专门用来比较两个变量是否相等的,也就是比较两个变量对应的内存中的数值是否相等。用来比较基本类型的数据是否相等,两个引用是否相等(是否指向同一个对象) ,只能用“== ”。对于 equal 方法, 主要是用来比较对象是否相等。在 Object 类里的 equal () 方法没有重写的情况下, equal 和== 是一样的。但是重写后 equal ()是指的连个对象是否相等,即其对应的数据以及类型是否相等( hashCode() 是否相等)。 12 、静态变量和实例变量的区别? 12 答:在语法定义上看:静态变量在定义时需要加上 static ,而实例变量不需要。在程序运行上看: 实例变量是属于一个实例的, 当一个实例创建时系统才为之分配内存空间。而静态变量是属于一个类的, 当程序加载到该类字节码时, 就会开辟对应的静态空间, 就可以是使用静态变量了, 而不需要创建实例。实例变量需要通过对象才能使用, 但是静态变量直接通过类来就还可以使用了。 13 、是否可以从一个 static 方法内部发出对非 static 方法的调用? 12 答:不能,一个 static 方法只能调用 static 方法。应为非静态方法是通过实例来调用的,使用前必须先创建实例。但是 static 方法但调用可以不用创建实例的, 所以在 static 方法中使用非 static 方法时,该非 static 方法没有创建对应的实力,这时是会报错的。 14 、 Integer 与 int 的区别 13 答: int是 Java 提供的 8 中原始数据类