zoukankan      html  css  js  c++  java
  • java选择题(三)

    1、静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )正确答案: A   

    A、正确
    B、错误
    解析:
      静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;
      非静态内部类可以直接访问外围类的数据,包括私有数据

     

    2、在类Tester中定义方法如下,public double max(int x, int y) { // 省略 },则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?正确答案: B 

     
    A.public int max(int a, int b) {}
    B.public int max(double a, double b) {}
    C.public double max(int x, int y) {}
    D.private double max(int a, int b) {}

     解析:

      重载:同名不同参,返回值无关。

      覆盖/重写:同名同参
     

    3、以下Java程序运行的结果是:

    public class Tester{
    public static void main(String[] args){
       Integer var1=new Integer(1);
       Integer var2=var1;
       doSomething(var2);
       System.out.print(var1.intValue());
       System.out.print(var1==var2);
    }
    public static void doSomething(Integer integer){
        integer=new Integer(2);
        }
    }

    正确答案: A   

    A.1true
    B.2true
    C.1false
    D.2false

    解析:

     4、关于下面的程序Test.java说法正确的是(    )。

    public class Test {
        static String x="1";
        static int y=1;
        public static void main(String args[]) {
            static int z=2;
            System.out.println(x+y+z);
        }
    }

    正确答案: D 

    A.3
    B.112
    C.13
    D.程序有编译错误

     解析:

      局部变量,由于在方法中,方法中的变量都在栈中,随着方法的进栈出栈产生和销毁。所以不可以被static修饰。一旦被static修饰变量就属于类了。
     

    5、@SuppressWarnings(“deprecation”)的功能是什么?正确答案: A  

    A.屏蔽不赞同使用的类和方法的警告
    B.屏蔽在强制类型转换的时候编译器给出的警告
    C.关闭所有警告信息
    D.当在可序列化的类上缺少serialVersionUID定义的警告

    解析:

      1、@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
      2、@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
      3、@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务

    6、对于构造方法,下列叙述正确的是( )。正确答案: A C D

    A.构造方法的优先级一般比代码块低。
    B.构造方法的返回类型只能是void型。
    C.构造方法的主要作用是完成对类的对象的初始化工作。
    D.一般在创建新对象时,系统会自动调用构造方法。

    解析:

    java程序初始化顺序:
      父类静态变量 -> 父类静态代码块(只执行一次) -> 子类静态变量 -> 子类静态代码块(只执行一次) -> 父类非静态变量 -> 父类非静态代码块 -> 父类构造函数 -> 子类非静态变量 -> 子类非静态代码块 -> 子类构造函数
     

    7、程序中常采用变量表示数据,变量具有名、地址、值、作用域、生存期等属性。关于变量的叙述,()是正确的。正确答案: A C D

    A.根据作用域规则,在函数中定义的变量只能在函数中引用
    B.在函数中定义的变量,其生存期为整个程序执行期间
    C.在函数中定义的变量不能与其所在函数的形参同名
    D.在函数中定义的变量,其存储单元在内存的栈区

    解析:

      在函数中,不管中间隔了几层,都不允许定义一个与形参同名的变量

    8、final、finally和finalize的区别中,下述说法正确的有?正确答案: A B

    A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

    B.finally是异常处理语句结构的一部分,表示总是执行。

    C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。

    D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。

    解析:

      finalize方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。

      使用 final 关键字修饰一个变量时,引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

    9、关于下面一段代码,以下说法正确的是: () 正确答案: A C

    public class Test {
        private synchronized void a() {
        }
        private void b() {
            synchronized (this) {
            }
        }
        private synchronized static void c() {
        }
        private void d() {
            synchronized (Test.class) {
            }
        }
    }
    A.同一个对象,分别调用方法a和b,锁住的是同一个对象
    B.同一个对象,分别调用方法a和c,锁住的是同一个对象
    C.同一个对象,分别调用方法b和c,锁住的不是同一个对象
    D.同一个对象,分别调用方法a、b、c,锁住的不是同一个对象

    解析:

    • 同步代码块(synchronized(this),synchronized(类实例对象),锁是小括号()中的实例对象)
    • 同步非静态方法(synchronized method),锁的是当前对象的实例对象
    • 同步代码块(synchronized(类.class)),锁是最小括号 () 中的类对象(Class对象)
    • 同步静态方法(synchronized static method),锁是当前对象的类对象(Class 对象)

    10、对于下面这段代码,以下说法正确的是:正确答案: C 

    public class Test
    {
        public int x;
        public static void main(String []args)
        {
            System. out. println("Value is" + x);
        }
    }
    A.程序会打出 "Value is 0"
    B.程序会抛出 NullPointerException
    C.非静态变量不能够被静态方法引用
    D.编译器会抛出 "possible reference before assignment"的错误

    解析:

      当类加载时,static静态方法随着类加载而初始化,此时实例对象还未被创建,但是非静态成员变量需要等到实例对象创建才会被初始化,故无法被引用。

    11、哪个类可用于处理 Unicode? 正确答案: A 

    A.InputStreamReader
    B.BufferedReader
    C.Writer
    D.PipedInputStream

    解析:  

      InputStreamReader是将字节流转换成字符流供我们使用。同时InputStreamReader可以指定字符集的编码。 

      InputStreamReader(InputStream in, String charsetName)  : 创建使用指定字符集的 InputStreamReader。

    12、说明输出结果。正确答案: C

    import java.util.Date; 
    public class SuperTest extends Date{ 
        private static final long serialVersionUID = 1L; 
        private void test(){ 
           System.out.println(super.getClass().getName()); 
        } 
          
        public static void main(String[]args){ 
           new SuperTest().test(); 
        } 
    }
    A.SuperTest
    B.SuperTest.class
    C.test.SuperTest
    D.test.SuperTest.class

    解析:

      super.getClass().getName()   返回:包名+类名

    13、下面的代码输出的结果为正确答案: A

    public class Test1 {
        static int cnt = 6;
        static {
            cnt += 9;
        }
        public static void main(String[] args) {
            System.out.println("cnt =" + cnt);
        }
        static {
            cnt /= 3;
        }
    }
    A.cnt=5
    B.cnt=2
    C.cnt=3
    D.cnt=6

    解析:

      本题考查初始化顺序:  

    (1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
    (2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
    (3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
    (4)执行父类构造方法。
    (5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
    (6)执行子类构造方法。

    14、一个容器类数据结构,读写平均,使用锁机制保证线程安全。如果要综合提高该数据结构的访问性能,最好的办法是______。

    正确答案: C  

    A.只对写操作加锁,不对读操作加锁
    B.读操作不加锁,采用copyOnWrite的方式实现写操作
    C.分区段加锁
    D.无法做到

    解析:

      选项A,只对写操作加锁,不对读操作加锁,会造成读到脏数据
      选项B,CopyOnWrite的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用。这里读写平均,不适用
      选项C,分段加锁,只在影响读写的地方加锁,锁可以用读写锁,可以提高效率,currenthashmap就是分段锁

    15、以下哪些继承自 Collection 接口()正确答案: A B

    A.List
    B.Set
    C.Map
    D.Array

    解析:

     16、以下代码可以使用的修饰符是:()正确答案: A B D

    public interface Status {
     /*INSERT CODE HERE*/  int MY_VALUE=10;
     }
    A.final
    B.static
    C.abstract
    D.public

    解析:

      接口中字段的修饰符:public static final(默认不写)

      接口中方法的修饰符:public abstract(默认不写)

    17、Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( ) 正确答案: A D 

    public class Demo{
     
      float func1()
      {
        int i=1;
        return;
      }
      float func2()
      {
        short i=2;
        return i;
      }
      float func3()
      {
        long i=3;
        return i;
      }
      float func4()
      {
        double i=4;
        return i;
      }
    }
    A.func1
    B.func2
    C.func3
    D.func4

    解析:

      自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
      byte,short,char ->  int  ->  long  ->  float  ->  double

      运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:

    操作数 1 类型

    操作数 2 类型

    转换后的类型

    byte 、 short 、 char

    int

    int

    byte 、 short 、 char 、 int

    long

    long

    byte 、 short 、 char 、 int 、 long

    float

    float

    byte 、 short 、 char 、 int 、 long 、 float

    double

    double

    18、以下各类中哪几个是线程安全的?( )  正确答案: B C D

    A.ArrayList
    B.Vector
    C.Hashtable
    D.Stack

    解析:

      Stack继承了Vector,所以也是线程安全的

  • 相关阅读:
    Oracle 数据库(oracle Database)Select 多表关联查询方式
    Mysql下在某一列后即表的某一位置添加新列的sql语句
    通过javascript库JQuery实现页面跳转功能代码
    Linux 流量监控软件 NetHogs
    php和mysql中uft8中文编码乱码的几种解决办法
    Codeigniter 2.0多目录配置详解
    PHP编程54条必知
    Ubuntu 安装XAMPP集成环境软件包 与 运行WordPress 的简单方法
    Ubuntu 12.04 lts / Win7双系统安装方法
    smarty的配置使用
  • 原文地址:https://www.cnblogs.com/strong-FE/p/15460065.html
Copyright © 2011-2022 走看看