• 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 }
    What is the result?
     

    A、ABDCBDCB

    B、ABCDABCD

    C、Compilation fails.

    D、An exception is thrown at runtime.

    答案:A
    for循环执行过程,先执行初始化foo('A'),在执行条件foo('B'),满足条件执行foo('D'),判定是否满足下次执行条件foo('C');第二次初始化foo('A')语句不会再执行
     
     
    2、
     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

    解析:

        StringBuffer a = newStringBuffer("A"); 
        StringBuffer b = newStringBuffer("B"); 
     
    此时内存中的状态如下图所示:
     
     
    publicstaticvoidoperator(StringBuffer x, StringBuffer y) { 
        x.append(y); y = x; 
    }
    进入如下方法后,内存中的状态为:
     
     
     x.append(y);
    这条语句执行后,内存的状态为:
     
     
     y = x; 
    这条语句执行后,内存的状态为:
     
     
    当operator方法执行完毕后内存中的状态为:因为方法执行完毕,局部变量消除。
     
    有内存中的状态,可以知道最后的结果。
     
     
    3、java接口的方法修饰符可以为?(忽略内部接口)

         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、静态区、栈区、栈区

    答案:C
    a是类中的成员变量,存放在堆区
    b、c都是方法中的局部变量,存放在栈区
     
     
    5、
    以下关于final关键字说法错误的是

          A、final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性

          B、final修饰的类肯定不能被继承

          C、final修饰的方法不能被重载

          D、final修饰的变量不允许被再次赋值

    答案:AC 

    final修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。
    final修饰的方法不能被重写而不是重载! 
    final修饰属性,此属性就是一个常量,不能被再次赋值! 
     
     
    6、
     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 }
    Cnt的值是

    A、Cnt=5

    B、Cnt=2

    C、Cnt=3

    D、Cnt=6

    答案:A

    解析:

    初始化静态变量--执行静态代码块--执行main方法

  • 相关阅读:
    LPTHW 笨办法学python 20章
    LPTHW 笨方法学python 19章
    LPTHW 笨方法学python 18章
    LPTHW 笨方法学习python 16章
    hadoop删除节点。
    url中的百分号转译
    thrift编译安装
    python学习:函数的学习
    jsp静态导入和动态导入 笔记
    简要描述cookie和session的区别:
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5550220.html
Copyright © 2020-2023  润新知