美文网首页
Java基础笔试练习(九)

Java基础笔试练习(九)

作者: Coder编程 | 来源:发表于2019-09-28 12:17 被阅读0次
    Java基础笔试练习(九)

    1.下面所示的java代码,运行时,会产生()类型的异常 ?

    int Arry_a[] = new int[10];
    System.out.println(Arry_a[10]);
    
    

    A.ArithmeticException
    B.NullPointException
    C.IOException
    D.ArrayIndexOutOfBoundsException

    答案:
    D

    解析:
    定义的数组长度为10,角标即为0-9,访问数组角标10会出现数组角标越界异常

    2.下面关于继承的描述正确的是?

    A.在Java中只允许单一继承
    B.在Java中一个类只能实现一个接口
    C.在Java中一个类不能同时继承一个类和实现一个接口
    D.Java的单一继承使代码不可靠

    答案:
    A

    解析:

    3. Java 源程序文件的扩展名为()

    A..java
    B..class
    C..exe
    D..jar

    答案:
    A

    解析:

    4.Java 语言用以下哪个类来把基本类型数据封装为对象()

    A.包装类
    B.Class
    C.Math
    D.Object

    答案:
    A

    解析:

    5. 下列代码的执行结果是()

     public class Test {
        public static int a = 1;
        public static void main(String[] args) {
            int a = 10;
            a++; Test.a++;
            Test t=new Test();
            System.out.println("a=" + a + " t.a=" + t.a);
        }
    
    } 
    

    A.a=10 t.a=3
    B.a=11 t.a=2
    C.a=12 t.a=1
    D.a=11 t.a=1

    答案:
    B

    解析:
    值为1的a属于类变量也叫作成员变量,值为10的a是局部变量 首先a++时就近原则,用局部变量10来加,Text.a直接用类名调用成员变量的情况,只能是static 修饰的成员变量1来加,然后又实例化了对象,在输出中第一个a= 用就近原则输出11,第二个t.a 对象只能调用类变量输出2

    6.下面有关java classloader说法错误的是?

    A.Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension ClassLoader,App ClassLoader
    B.ClassLoader使用的是双亲委托模型来搜索类的
    C.JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
    D.ClassLoader就是用来动态加载class文件到内存当中用的

    答案:
    C

    解析:
    JVM在判定两个class是否相同时,不仅要判断两个类名是否相同,而且要判断是否由同一个类加载器实例加载的。

    7.以下那个数据结构是适用于"数据必须以相反的顺序存储然后检索" ? ()

    A.Stack
    B.Queue
    C.List
    D.Link List

    答案:
    A

    解析:
    栈-先进后出(比喻:坐电梯) 队列-先进先出(水管) list-链表(怎么存就怎么取)

    8. 在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( )。

    A.System.out.print (buffer[i]);
    B.DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename));
    C.DataInputStream din = new DataInputStream(new FileInputStream(this.filename));。
    D.System.in.read(buffer)。

    答案:
    B

    解析:
    input和output指的是对于程序而言。input是从文件读取进来,output是输出到文件。

    9.Please write the output result 。

    public class Test
    {
         public static void changeStr(String str)
         {
             str = "welcome";
         }
         public static void main(String[] args)
         {
             String str = "1234";
             changeStr(str);
             System.out.println(str);
         }
    }
    
    

    A.1234
    B.welcome
    C.空
    D.不确定

    答案:
    A

    解析:
    string的值是不可改变的,所有试图更改String的行为都会创建一个新的String.

    10.关于String,StringBuilder以及StringBuffer,描述错误的是()

    A.对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
    B.StringBuffer是线程安全
    C.StringBuilder是线程安全
    D.可以修改StringBuilder和StringBuffer的内容

    答案:
    C

    解析:
    A,java中的字符串存储在字符串常量区,不会改变,发生改变是会新创建一个对象
    B,StringBuffer是线程安全的StringBuilder
    C,StringBuilder跟StringBuffer功能相同,区别是StringBuilder不是线程安全的
    D,StringBuilder和StringBuffer底层都是以字符数组存放的,可以修改内容

    11.以下哪个不属于JVM堆内存中的区域()?

    A.survivor区
    B.常量池
    C.eden区
    D.old区

    答案:
    B

    解析:
    jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
    常量池属于 PermGen(方法区)

    12.运行下面代码,输出的结果是

    class A {
        public A() {
            
    System.out.println("class A");
        }
        {
    System.out.println("I'm A class"); }
        static {
    System.out.println("class A static"); }
    }
    public class B extends A {
        public B() {
            
    System.out.println("class B");
        }
        {
    System.out.println("I'm B class"); }
        static {
    System.out.println("class B static"); }
        
        public static
    void main(String[] args) {
    new B();
    }
    

    A.

    class A static 
    class B static    I'm A class     
    class A    I'm B class  
    class B
    

    B.

    class A static  I'm A class   
    class A    class B static 
    I'm B class  class B
    

    C.

    class A static    class B static 
    class A    I'm A class      class B      
    I'm B class
    

    D.

    class A static   class A  I'm A
    class    class B static     
    class B I'm B class
    

    答案:
    A

    解析:
    ①父类静态变量和静态代码块(按照声明顺序);
    ②子类静态变量和静态代码块(按照声明顺序);
    ③父类成员变量和代码块(按照声明顺序);
    ④父类构造器;
    ⑤子类成员变量和代码块(按照声明顺序);
    ⑥子类构造器。

    13.下列语句正确的是:?

    A.形式参数可被字段修饰符修饰
    B.形式参数不可以是对象
    C.形式参数为方法被调用时真正被传递的参数
    D.形式参数可被视为local variable

    答案:
    D

    解析:

    14.以下程序输出结果是?

    String str =
    "";
    System.out.print(str.split(",").length);
    

    A.0
    B.1
    C.出现异常

    答案:
    B

    解析:

    15.public class contained in a Java program file must have the same name as the file, except for the extension ".java".

    A.FALSE
    B.TRUE

    答案:
    A

    解析:
    题目的意思是:除去扩展名.java的部分,包含在java文件里的Java里的公共类必须与文件的名字相同。
    但是公共的内部类是不需要和文件的名字相同的。

    16.其中"c.getDeclaredMethods"的作用是:

    import java.lang.reflect.Method;
    public class DumpMethods{
        public static void main(String[] args) {
        try {
            Class c=Class.forName(args[0]);
            Method m[]=c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++) {
                System.out.println(m[i].toString());
            }
        } catch (Throwable e) {
            System.err.println(e);
        }
        }
    }
    
    

    A.取得类的公有方法对象
    B.取得类的所有公有方法名称
    C.取得类的所有方法对象
    D.选项都不正确

    答案:
    D

    解析:
    public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,包括它所实现接口的方法。
    public Method[] getDeclaredMethods()对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。包括它所实现接口的方法。

    17.运行代码,输出的结果是()

    public class P {
    public static int abc = 123;
    static{
    System.out.println("P is init");
    }
    }
    public class S extends P {
    static{
    System.out.println("S is init");
    }
    }
    public class Test {
    public static void main(String[] args) {
    System.out.println(S.abc);
    }
    }
    
    

    A.P is init 123
    B.S is init P is init 123
    C.P is init S is init 123
    D.S is init 123

    答案:
    A

    解析:
    属于被动引用不会出发子类初始化
    1.子类引用父类的静态字段,只会触发子类的加载、父类的初始化,不会导致子类初始化
    2.通过数组定义来引用类,不会触发此类的初始化
    3.常量在编译阶段会进行常量优化,将常量存入调用类的常量池中, 本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。

    18.java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?

    A.Hashtable
    B.Vector
    C.TreeSet
    D.LinkedList

    答案:
    AB

    解析:
    HashMap是线程安全的HashMap
    Vector是线程安全的ArrayList
    TreeSet和LinkedList都不是线程安全的

    19.下面哪些赋值语句是正确的()

    A.long test=012
    B.float f=-412
    C.int other =(int)true
    D.double d=0x12345678
    E.byte b=128

    答案:
    A B D

    解析:
    A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。AB正确
    boolean类型不能和任何类型进行转换,会报出类型异常错误。所以C错。
    D选项可以这样定义,D正确。
    E选项中,byte的取值范围是-128—127。报出异常: cannot convert from int to byte.所以E选项错误。

    20.Thread. sleep()是否会抛出checked exception?

    A.会
    B.不会

    答案:
    A

    解析:
    Thread.sleep() 和 Object.wait(),都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常(checked exception)

    推荐

    Java笔试内容集合 持续更新中....

    文末

    欢迎关注个人微信公众号:Coder编程
    获取最新原创技术文章和免费学习资料,更有大量精品思维导图、面试资料、PMP备考资料等你来领,方便你随时随地学习技术知识!

    文章收录至
    Github: https://github.com/CoderMerlin/coder-programming
    Gitee: https://gitee.com/573059382/coder-programming
    欢迎关注并star~

    微信公众号

    相关文章

      网友评论

          本文标题:Java基础笔试练习(九)

          本文链接:https://www.haomeiwen.com/subject/ffozuctx.html