java 面试.
1、
1 public class Test 2 { 3 static boolean foo(char c) 4 { 5 System.out.print(c); 6 return true; 7 } 8 public static void main( String[] argv ) 9 { 10 int i = 0; 11 for ( foo('A'); foo('B') && (i < 2); foo('C')) 12 { 13 i++ ; 14 foo('D'); 15 } 16 } 17 }
A、ABDCBDCB
B、ABCDABCD
C、Compilation fails.
D、An exception is thrown at runtime.
1 public class Test { 2 public static void main(String[] args) { 3 StringBuffer a = new StringBuffer("A"); 4 StringBuffer b = new StringBuffer("B"); 5 operator(a, b); 6 System.out.println(a + "," + b); 7 } 8 public static void operator(StringBuffer x, StringBuffer y) { 9 x.append(y); y = x; 10 } 11 }
A、A,A
B、A,B
C、B,B
D、AB,B
答案:D
解析:
A、private
B、protected
C、final
D、abstract
答案:D
解析:
1、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。原因如下:抽象方法没有方法体,是用来被继承的,所以不能用private修饰;static修饰的方法可以通过类名来访问该方法(即该方法的方法体),抽象方法用static修饰没有意义;使用synchronized关键字是为该方法加一个锁。。而如果该关键字修饰的方法是static方法。则使用的锁就是class变量的锁。如果是修饰 类方法。则用this变量锁。但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以。锁应该归其子类所有。所以。抽象方 法也就不能用synchronized关键字修饰了;native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?
2、接口是一种特殊的抽象类,接口中的方法全部是抽象方法(但其前的abstract可以省略),所以抽象类中的抽象方法不能用的访问修饰符这里也不能用。而且protected访问修饰符也不能使用,因为接口可以让所有的类去 实现(非继承) ,不只是其子类,但是要用public去修饰。接口可以去继承一个已有的接口。
4、
下列Java代码中的变量a、b、c分别在内存的____存储区存放。
1 class A { 2 private String a = “aa”; 3 public boolean methodB() { 4 String b = “bb”; 5 final String c = “cc”; 6 } 7 }
A、堆区、堆区、堆区
B、堆区、栈区、堆区
C、堆区、栈区、栈区
D、堆区、堆区、栈区
E、静态区、栈区、堆区
F、静态区、栈区、栈区
A、final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B、final修饰的类肯定不能被继承
C、final修饰的方法不能被重载
D、final修饰的变量不允许被再次赋值
答案:AC
1 public class Test{ 2 static int cnt = 6; 3 static{ 4 cnt += 9; 5 } 6 public static void main(string[] args){ 7 System.out.println(“cnt =” + cnt); 8 } 9 static{ 10 Cnt /=3; 11 }; 12 }
A、Cnt=5
B、Cnt=2
C、Cnt=3
D、Cnt=6
答案:A
解析:
初始化静态变量--执行静态代码块--执行main方法