Java笔试题库之选题题篇【1

Wesley13
• 阅读 850

1.下面中哪两个可以在A的子类中使用:( )

  class A {

    protected int method1 (int a, int b) {

      return 0;

    }

  }

A. public int method 1 (int a, int b) { return 0; }

B. private int method1 (int a, int b) { return 0; }

C. private int method1 (int a, long b) { return 0; }

D. public short method1 (int a, int b) { return 0; }

解答:AC

A,符合子类重写父类方法的规则

B,子类重写父类的方法,访问权限不能降低

C,属于重载

D,子类重写父类的方法 返回值类型要相同或是父类方法返回值类型的子类

2.抽象方法可以被static修饰嘛?

A True

B False

解答:B

抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract是矛盾的,所以abstract是不能被修饰为static,否则就失去了abstract的意义了

3.以下程序的执行结果是什么?

  class Base{

    void test() {

      System.out.println(“Base.test()”);

    }

  }

  public class Child extends Base {

    void test() {

      System.out.println(“Child.test()”);

    }

    public static void main(String[] a) {

      Child anObj = new Child();

      Base baseObj = (Base)anObj;

      baseObj.test();

    }

  }

A Child.test() Base.test()

B Base.test() Child.test()

C Base.test()

D Child.test()

解答:D

测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类的test方法,因此调用子类的test方法。

4.以下程序的执行结果是什么

  class Base{

    static void test() {

      System.out.println(“Base.test()”);

    }

  }

  public class Child extends Base {

    void test() {

      System.out.println(“Child.test()”);

      Base.test(); //Call the parent method

    }

    static public void main(String[] a) {

      new Child().test();

    }

  }

A Child.test() Base.test()

B Child.test() Child.test()

C 编译报错. 

D 运行报错. 

解答:C

静态方法不能在子类中被重写

5.以下程序的执行结果是什么

  public class Base{

    private void test() {

      System.out.println(6 + 6 + “(Result)”+6+6);

    }

    static public void main(String[] a) {

      new Base().test();

    }

  }

A 66(Result)66

B 12(Result)12

C 66(Result)12

D 12(Result)66

解答:D

字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如上边例子要是System.out.println(“(Result)”+6 + 6 );那么结果就是(Result)66,如果第一个和第二个。。。第n个都是基本数据第n+1是字符串类型,那么前n个都按加法计算出结果在与字符串连接

6.以下程序的执行结果是什么;’ ?’ 是空格的意思.

  public class Base{

    private void test() {

      String aStr = “?One?”;

      String bStr = aStr;

      aStr.toUpperCase();

      aStr.trim();

      System.out.println(“[" + aStr + "," + bStr + "]“);

    }

    static public void main(String[] a) {

      new Base().test();

    }

  }

A [ONE,?One?]

B [?One?,One]

C [ONE,One]

D [ONE,ONE]

E [?One?,?One?]

解答:E

通过String bStr = aStr;这句代码使bStr和aStr指向同一个地址空间,所以最后aStr和bStr的结果应该是一样,并且aStr在调用了方法之后,并没有将结果重洗赋值给aStr(即aStr=aStr.toUpperCase();)所以aStr调用了方法之后其原本的值并没有被改变

7.下面关于变量及其范围的陈述哪些是不正确的( ):

A.实例变量是类的成员变量

B.实例变量用关键字static声明

C.在方法中定义的局部变量在该方法被执行时创建

D.局部变量在使用前必须被初始化

解答:BC

由static修饰的变量称为类变量或是静态变量;方法加载的时候创建局部变量

8.下列关于修饰符混用的说法,错误的是( ):

A.abstract不能与final并列修饰同一个类

B.abstract类中可以有private的成员

C.abstract方法必须在abstract类中

D.static方法中能处理非static的属性

解答 D

:静态方法中不能引用非静态的成员

9.执行完以下代码int[ ]  x = new int[25];后,以下哪项说明是正确的( ):

A、 x[24]为0

B、 x[24]未定义

C、 x[25]为0

D、 x[0]为空

解答:A

x属于引用类型的int数组,数组定义以后,该引用类型的每一个成员是int类型,默认值都为:0;并且数组是以0为索引开始算,虽然其长度为25,但其最大下标只有25-1

10.编译运行以下程序后,关于输出结果的说明正确的是 ( ):

  public class Conditional{

    public static void main(String args[ ]){

    int x=4;

    System.out.println(“value is “+ ((x>4) ? 99.9 :9));

    }

  }

A、 输出结果为:value is 99.99

B、 输出结果为:value is 9

C、 输出结果为:value is 9.0

D、 编译错误

解答:C

三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9是double类型 而9是int类型,double容量高。

11.关于以下application的说明,正确的是( ):

1.  class StaticStuff{

2.    static int x=10;

3.    static { x+=5;}

4.    public static void main(String args[ ]){

5.      System.out.println(“x=” + x);

6.    }

7.    static { x/=3;}

8. }

A、 3行与7行不能通过编译,因为缺少方法名和返回类型

B、 7行不能通过编译,因为只能有一个静态初始化器

C、 编译通过,执行结果为:x=5

D、编译通过,执行结果为:x=3

解答:C

静态代码块是类加载的时候就会被执行到的,静态代码块的执行顺序是按照在类中出现的先后顺序执行。

12.关于以下程序代码的说明正确的是( ):

1.  class HasStatic{

2.     private static int x=100;

3.     public static void main(String args[ ]){

4.       HasStatic hs1=new HasStatic( );

5.       hs1.x++;

6.       HasStatic hs2=new HasStatic( );

7.       hs2.x++;

8.       hs1=new HasStatic( );

9.       hs1.x++;

10.       HasStatic.x - -;

11.       System.out.println(“x=”+x);

12.     }

13.  }

A、5行不能通过编译,因为引用了私有静态变量

B、10行不能通过编译,因为x是私有静态变量

C、程序通过编译,输出结果为:x=101

D、程序通过编译,输出结果为:x=102

E、程序通过编译,输出结果为:x=103

解答:D

静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量x, 静态变量可以通过类名调用。

13.下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D.一个class只能定义一个constructor

解答:C

构造方法的作用是在实例化对象的时候给数据成员进行初始化

A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法

B.构造方法与类同名,类中可以有和类名相同的方法

D.构造方法可以重载

14.下列哪种说法是正确的()

A.实例方法可直接调用超类的实例方法

B.实例方法可直接调用超类的类方法

C.实例方法可直接调用其他类的实例方法

D.实例方法可直接调用本类的类方法

解答:D

A. 实例方法不可直接调用超类的私有实例方法

B. 实例方法不可直接调用超类的私有的类方法

C.要看访问权限

15.下列哪一种叙述是正确的( )

A. abstract修饰符可修饰字段、方法和类

B. 抽象方法的body(方法实体)部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

解答:D

abstract可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}

16.下面代码的执行结果是?

  import java.util.*;

  public class ShortSet{

    public static void main(String args[]){

      Set s=new HashSet();

      for(Short i=0;i<100;i++){

        s.add(i);

        s.remove(i-1);

      }

      System.out.println(s.size());

    }

  }

A.1

B.100

C.Throws Exception

D.None of the Above

解答:B

i是Short类型, i-1是int类型,其包装类为Integer,所以s.remove(i-1)不能移除Set集合中Short类型对象;只有将(i-1)强转为Short类型的时候,才能移除Set集合中的对象

17.链表具有的特点是:

A、不必事先估计存储空间

B、可随机访问任一元素

C、插入删除不需要移动元素

D、所需空间与线性表长度成正比

解答:ACD

A.采用动态存储分配,不会造成内存浪费和溢出。

B. 不能随机访问,查找时要从头指针开始遍历

C. 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素

D. 需要用额外空间存储线性表的关系,存储密度小

18.Java语言中,String类的IndexOf()方法返回的类型是?

A、Int16 B、Integer C、int D、long

解答:C

indexOf方法的声明为:public int indexOf(int ch)在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。

19.以下关于面向对象概念的描述中,不正确的一项是()。

A.在现实生活中,对象是指客观世界的实体

B.程序中的对象就是现实生活中的对象

C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)

D.在程序中,对象是一组变量和相关方法的集合

解答:B

面向过程强调的是每一个功能的具体实现步骤,面向对象强调的是对象调用功能

20..执行下列代码后,哪个结论是正确的

  String[] s=new String[10];

A. s[9] 为 null;

B. s[10] 为 “”;

C. s[0] 为 未定义

D. s.length 为10

解答:AD

s是引用类型,s中的每一个成员都是引用类型,即String类型,String类型默认的值为null

21.属性的可见性有。(不定项选择)

A.公有的

B.私有的

C.私有保护的

D.保护的

E.默认的

解答:ABDE

属性的可见性有四种:公有的(public) 保护的(protected) 默认的 私有的(private)

22..在字符串前面加上_____符号,则字符串中的转义字符将不被处理。

A @

B \

C #

D %

解答:B

在java中“\”表示转译符,改变了后面字符的本来意思;\r:回车;\n:换行(new line);\t:相当于tab键(叫制表符太生涩);\\:表示\;\':表示';\":表示"

23.下列代码哪行会出错: 

  1.   public void modify() {

  2.     int I, j, k;

  3.     I = 100;

  4.     while ( I > 0 ) {

  5.       j = I * 2;

  6.       System.out.println (” The value of j is ” + j );

  7.       k = k + 1;

  8.       I - -;

  9.     }

  10.   }

A. 4

B. 6

C. 7

D. 8

解答:C

k没有初始化就使用了

24.对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟排序后的结果为:

A {314,298,508,123,145,486}

B {298,314,508,123,486,145}

C {298,123,314,508,486,145}

D {123、298,314,508,486,145}

解答:B

插入排序算法:()

  public static void injectionSort(int[] number) {

  // 第一个元素作为一部分,对后面的部分进行循环

  for (int j = 1; j < number.length; j++) {

    int tmp = number[ j ];

    int i = j – 1;

    while (tmp < number[ i ]) {

      number[i + 1] = number[ i ];

      i - -;

      if (i == -1)

        break;

    }

    number[i + 1] = tmp;

  }

  }

25.栈是一种。

A 存取受限的线性结构

B 存取不受限的线性结构

C 存取受限的非线性结构

D 存取不受限的非线性结构

解答:A

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。

26.下列哪些语句关于内存回收的说明是正确的。

A 程序员必须创建一个线程来释放内存

B 内存回收程序负责释放无用内存

C 内存回收程序允许程序员直接释放内存

D 内存回收程序可以在指定的时间释放内存对象

解答:B

垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System. gc 方法来”建议”执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

27.要实现java.long.Runnable接口,必须实现下列哪个方法?

A. void run()

B. public void run()

C. public void start()

D. void run(int priority)

E. public void run(int priority)

F. public void start(int priority)

解答:B

实现Runnable接口,接口中有一个抽象方法run,实现类中实现该方法。

28 下列程序的结果是什么?

1  public static void main(String[] args) {

2    Object obj = new Object() {

3      public int hashCode() {

4        return 42;

5      }

6    };

7    System.out.println(obj.hashCode());

8  }

A. 42

B.在运行时抛出异常

C. 编译失败,原因是第2行出现错误

D. 编译失败,原因是第3出现错误

E. 编译失败,原因是第7行出现错误.

解答:A

匿名内部类重写了hashCode方法。

29 java中的两个保留字是什么

A. const

B. import

C. doto

D. implements

解答:AC

const用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改

goto指定跳转到标签,找到标签后,程序将处理从下一行开始的命令

30. 在一个类中重写了hashCode和equals两个方法,那么对于同一个类的两个实例,下列说法正确的是?

A. 如果hashCode值相同,equsal不同,则这两个对象相同

B. 如果hashCode值相同,equals相同,则这两个对象相同

C. 如果hashCode不同,equals相同,则这两个对象相同

D. 如果hashCode值相同,则这两个对象有可能相同

解答:BD

先通过 hashcode来判断某个对象是否存放某个桶里,但这个桶里可能有很多对象,那么我们就需要再通过 equals 来在这个桶里找到我们要的对象。

31. java中char的取值范围是多少?

A. 0 ~32767

B. 0 ~65535

C. –65535~65535

D. –128 ~127

解答:B

在Java中,char是一个无符号16位类型,取值范围为0到65535。

32. 下列程序运行结果是什么?

  public class Test {

    private static float[] f = new float[2];

    public static void main(String args[]) {

      System.out.println(“f[0] = “ + f[0]);

    }

  }

A. f[0] = 0

B. f[0] = 0.0

C. 编译时报错

D. 运行时报错

解答:B

f属于引用类型的float数组,数组定义以后,该引用类型的每一个成员是float类型,默认值都为:0.0

33. 下列程序的运行结果是什么?

  public class Test {

    public static void main(String[] args) {

      String str = NULL;

      System.out.println(str);

    }

  }

A. NULL

B. 编译时报错

C. ""

D.运行时报错

解答:B

null应该小写

34、下列程序执行结果是什么?

  public class Text{

    public static void main(String[] args){

      int a=10,b=4,c=20,d=6;

      System.out.println(a++*b+c*--d);

    }

  }

A、144

B、164

C、140

D、160

解答:C

在java中执行加减乘除基本运算时,已就遵循先乘除后加减的原则,而++a与a++的区别在于,++a是先自增后在参与运算,a++是先参与运算之后在自增,所以最终答案是10*4+20*5=140

35、下列哪两个选项不能直接导致线程停止?

A. 跳出同步代码块

B. 调用wait方法

 C. 调用notify方法

 D. 调用读取流的方法

 E. 设置线程的优先权

 解答:AC

stop方法.这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放 所有他锁住对象上的锁。这会导致对象处于不一致的状态。 当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。被中断的线程会在安全的时候停止。

A、如果一个线程想进入一个已经被另外一个线程占用得同步代码块,这个线程会停止,但是这里说的是跳出

B、他能使当前线程停止,等待别人调用notify方法

C、放另外一个调用了wait方法得线程继续执行,自己也可以继续执行

D、这是典型的阻塞方法,线程等待知道确实有东西可读得时候才会去读

E、因为优先级改变了,JVM要重新选择优先级高得先执行,所以会短暂停止

36、 关于默认构造函数的创建,下列说法那些正确

A. 默认构造函数可以初始化方法变量

B. 构造方法默认调用超类的无参构造方法

C. 默认构造方法会去初始化成员变量

D. 如果没有无参构造函数,但有其他构造函数,程序会自动创建默认的构造函数

E. 只有在该类没有其他构造函数的时候,程序才会自动创建默认的构造函数

解答:BCE

构造方法的作用是实例化对象的时候给数据成员初始化,如果类中没有显示的提供构造方法,系统会提供默认的无参构造方法,如果有了其它构造方法,默认的构造方法不再提供。

37、 在下列程序中声明一个内部内,以下选择中,哪些最合适?

  public class OuterClass {

    private double d1 = 1.0;

    //在这里声明

  }

A. static class InnerOne { public double methoda() {return d1;} }

B. static class InnerOne { static double methoda() {return d1;} }

C. private class InnerOne { public double methoda() {return d1;} }

D. protected class InnerOne { static double methoda() {return d1;} }

E. public abstract class InnerOne { public abstract double methoda(); }

解答:CE

AB.内部类可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量;

D.非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员

38、 下列方法中,哪些方法在子类中不能重写? 

A. final void methoda() {}

B. void methoda() {}

C. static void methoda() {}

D. static final void methoda() {}

解答:ACD

final修饰方法,在子类中不能被重写。被static修饰的方法在子父类中不算是重写,其底层是把父类的同名方法隐藏了

39、下列程序的运行结果是什么:

  public class Test {

    public static void main (String args[]) {

      class Foo {

        public int i = 3;

      }

      Object o = (Object) new Foo();

      Foo foo = (Foo)o;

      System.out.println(foo.i);

    }

  }

A. 编译失败

B. 编译成功,并且会输出打印“3”

C. 编译成功,但会在第6行抛出ClassCastException异常

D. 编译成功,但会在第7行抛出ClassCastException异常

解答:B

局部内部类的使用

40、 下列程序的运行结果是什么:

  public class Test {

    public static void main (String [] args) {

      String foo = “blue”;

      String bar = foo;

      foo = “green”;

      System.out.println(bar);

    }

  }

A. 运行时异常

B. 编译时异常

C. 输出结果为“null”

D. 输出结果为 “blue”

E. 输出结果为 “green”

解答:D

采用String foo = “blue”定义方式定义的字符串放在字符串池中,通过String bar = foo;他们指向了同一地址空间,就是同一个池子,当执行foo = “green”; foo指向新的地址空间。

41、下面哪个选项中整型变量foo的值最接近但是不大于double型变量bar的值?

A. int foo = (int) Math.max(bar);

B. int foo = (int) Math.min(bar);

C. int foo = (int) Math.abs(bar);

D. int foo = (int) Math.ceil(bar);

E. int foo = (int) Math.floor(bar);

F. int foo = (int) Math.round(bar);

解答:E

max方法是取最大值

min方法是取最小值

abs方法是取bar的绝对值,

ceil方法返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。

floor方法返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。

round方法 返回最接近参数的 long。

42、 下列程序的运行结果是什么:

1.    package foo;

2.    import java.util.Vector;

3.    private class MyVector extends Vector {

4.      int i = 1;

5.      public MyVector() {

6.        i = 2;

7.       }

8.    }

9.    public class MyNewVector extends MyVector {

10.    public MyNewVector () {

11.      i = 4;

12.    }

13.    public static void main (String args []) {

14.      MyVector v = new MyNewVector();

15.     }

16.  }

A. 编译成果

B. 在第3行编译失败

C. 在第6行编译失败

D. 在第9行编译失败

E. 在第14行编译失败

解答:B

类MyVector不能是私有的

43、下列程序执行结果是什么?

  public class Text{

    public static void main(String[] args){
      int i=12;

      System.out.println(i+=i-=i*=i);

    }

  }

A、程序无法编译

B、100

C、0

D、-120

解答:D

在java中执行加减乘除基本运算时,已就遵循先乘除后加减的原则,而i+=i相当于i=i+i;

本题我们先将i+=i-+i*=i编号 => i1+=i2-=i3*=i4;在计算之前先明白i1=i2=i3=i4=i=12;先计算i3=i*i=144,;再计算i1+=i2即为i1=i1+i2=24,此时i1=i2=24;最后计算i2-=i3即为i2=i2-i3=-120;

44、 下列选项中,哪些选项与第2行相等:

1.   public interface Foo{

2.     int k = 4;

3.   }

A. final int k = 4;

B. Public int k = 4;

C. static int k = 4;

D. Private int k = 4;

E. Abstract int k = 4;

F. Volatile int k = 4;

G. Transient int k = 4;

H. protected int k = 4;

解答:AB

static:修饰的静态变量

final 修饰的是常量

abstract不能修饰变量

Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

Transient:对不需序列化的类的域使用transient关键字,以减少序列化的数据量。

int k=4相当于public static final int k=4; 在接口中可以不写static final

45、 下列代码的执行结果是什么:

  public class foo {

    static String s;

    public static void main (String[]args) {

    System.out.println (“s=” + s);

    }

  }

A. 代码编译成功并输出“s=”

B. 代码编译成功并输出“s=null”

C. 因为变量s没有初始化,所以代码编译失败

D. 代码编译成功,但在调用toString的时候抛出NullPointerException异常

解答:B

String为引用数据类型,引用类型数据成员的默认值为null

46、下列创建数组实例正确的是? 

A. int[] ia = new int [15];

B. float fa = new float [20];

C. char[] ca = “Some String”;

D. Object oa = new float[20];

E. Int ia [][] = (4, 5, 6) (1, 2, 3)

解答:AD

任何类的父类都是Object,数组也数据引用类型,Object oa = new float[20];这种写法相当于父类的用指向之类的实例。

47、下列代码中,在第四行 /X/ 可以插入那些选项进行编译?

  public class ExceptionTest {

    class TestException extends Exception {}

      public void runTest () throws TestException {}

      public void test () /X/ {

      runTest ();

    }

  }

A. throws Exception

B. Catch (Exception e).

C. Throws RuntimeException.

D. Catch (TestException e).

E. No code is necessary.

解答:A

方法上使用throws抛出异常,Exception是异常类的超类。

48、下列代码的执行结果是什么:

  public class SwitchTest {

    public static void main (String []args) {

      System.out.println (“value =” +switchIt(4));

    }

    public static int switchIt(int x) {

      int j = 1;

      switch (x) {

        case 1:j++;

        case 2: j++;

        case 3: j++;

        case 4: j++;

        case 5: j++;

        default:j++;

      }

      return j + x;

    }

  }

A. Value =3

B. Value =4

C. Value =5

D. Value =6

E. Value =7

F. Value =8

解答:F

由于case块没有break语句,那么从case 4:向下的代码都会执行。

49、下列选项中,那些是可以被throw抛出的?

A. Error

B. Event

C. Object

D. Exception

E. Throwable

F. RuntimeException

解答:ADEF

能够抛出的对象类型要是Throwable 或是Throwable的子类

50.在下面程序的第6行补充上下列哪个方法,会导致在编译过程中发生错误?

1)    class Super{

2)      public float getNum(){

3)        return 3.0f;

4)      }

     }

5)    pubhc class Sub extends Super{

  1.    }

A,public float getNum(){retun 4.0f;}

B.public void getNum(){}

C.public void getNum(double d){}

D.public double getNum(float d){ retun 4.0f ;}

解答:B

方法重写的问题。子类中有和父类的方法名相同,但是参数不同,不会出编译错误,认为是子类的特有的方法,但是如果子类中方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不通过。

51.下面关于import, class和package的声明顺序哪个正确?( )

A. package, import, class

B. class, import, package

C. import, package, class

D. package, class, import

解答:A

在java代码中,一个类从第一行到结尾,一般顺序是 本类地址(在哪个包下) 导了什么包 class声明

52.下面哪个是正确的?( )

A. String temp [] = new String {“a” “b” “c”};

B. String temp [] = {“a” “b” “c”}

C. String temp = {“a”, “b”, “c”}

D. String temp [] = {“a”, “b”, “c”}

解答:D

53.关于java.lang.String类,以下描述正确的一项是( )

A. String类是final类故不可以继承;

B. String类是final类故可以继承;

C. String类不是final类故不可以继承;

D. String类不是final类故可以继承;

解答:A

String类是自读字符串,被final修饰,在java中final修饰类的不能被继承

54.关于实例方法和类方法,以下描述正确的是:( )

A. 实例方法只能访问实例变量

B. 类方法既可以访问类变量,也可以访问实例变量

C. 类方法只能通过类名来调用

D. 实例方法只能通过对象来调用

解答:D

A  实例方法可以访问类变量

B  类方法只能访问类变量

C  类方法可以通过对象调用

55.接口是Java面向对象的实现机制之一,以下说法正确的是:( )

A. Java支持多继承,一个类可以实现多个接口;

B. Java只支持单继承,一个类可以实现多个接口;

C. Java只支持单继承,一个类只可以实现一个接口;

D. Java支持多继承,但一个类只可以实现一个接口。

解答:B

Java支持单重继承,一个类只能继承自另外的一个类,但是一个类可以实现多个接口。但是java可以多层继承

56.下列关于interface(接口)的说法正确的是:( )

A. interface中可以有private方法

B. interface中可以有final方法

C. interface中可以有function实现

D. interface可以继承其他interface

解答:D

A.接口中不可以有private的方法,接口不能被私有化

B.接口中不可以有final的方法 接口中的方法默认是 public abstract的

C.接口中的方法不可以有实现

57.已知A类被打包在packageA , B类被打包在packageB ,且B类被声明为public ,且有一个成员变量x被声明为protected控制方式 。C类也位于packageA包,且继承了B类 。则以下说话正确的是( )

A. A类的实例不能访问到B类的实例

B. A类的实例能够访问到B类一个实例的x成员

C. C类的实例可以访问到B类一个实例的x成员

D. C类的实例不能访问到B类的实例

解答:C

A、B包是public的,其他包能访问到

B、B包中的成员变量X被声明成protected的,只能本包内实例才能访问

C D、不同包子类的关系, 可以访问到父类B的protected成员

58.以下程序正确的输出是( )

  package test;

  public class FatherClass {

    public FatherClass() {

      System.out.println(“FatherClass Create”);

    }

  }

  package test;

  import test.FatherClass;

  public class ChildClass extends FatherClass {

    public ChildClass() {

      System.out.println(“ChildClass Create”);

    }

    public static void main(String[] args) {

      FatherClass fc = new FatherClass();

      ChildClass cc = new ChildClass();

    }

  }

A.

FatherClass Create

FatherClass Create

ChildClass Create

B.

FatherClass Create

ChildClass Create

FatherClass Create

C.

ChildClass Create

ChildClass Create

FatherClass Create

D.

ChildClass Create

FatherClass Create

FatherClass Create

解答:A

实例化一个类的时候,就会去调用它的构造方法;在子类构造方法执行时,默认情况下第一句是super();来调用父类的构造方法

59.给定如下代码,下面哪个可以作为该类的构造函数 ( )

  public class Test {

  }

A. public void Test() {?}

B. public Test() {?}

C. public static Test() {?}

D. public static void Test() {?}

解答:B

构造方法:与类同名没有放回类型

60.题目:

1.   public class test (

2.     public static void main (String args[]) {

3.       int i = 0xFFFFFFF1;

4.       int j = ~i;

6.     }

7.   }

程序运行到第5行时,j的值为多少?( )

A. –15

B. 0

C. 1

D. 14

E. 在第三行的错误导致编译失败

解答:D

int i = 0xFFFFFFF1;相当于 int i=-15  “~”表示取反再减1;结果就为15-1=14

61.关于sleep()和wait(),以下描述错误的一项是( )

A. sleep是线程类(Thread)的静态方法,wait是Object类的方法;

B. sleep不释放对象锁,wait放弃对象锁;

C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复;

D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态。

解答:D

sleep是线程类(Thread)的静态方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,必须和synchronized关键字一起使用。对此对象调用wait方法导致本线程进入阻塞状态,,只有针对此对象发出notify方法(或notifyAll)后本线程才会解除阻塞,但只有重新占用互斥锁之后,本线程才会进入运行状态。

62.下面能让线程停止执行的有(多选)( )

A. sleep();

B. stop();

C. notify();

D. synchronized();

E. yield();

F. wait();

G. notifyAll();

解答:ABDEF

sleep:导致此线程暂停执行指定时间

stop: 这个方法将终止所有未结束的方法,包括run方法。

synchronized():对象锁

yield:当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。

wait:当前正在被服务的线程需要睡一会,醒来后继续被服务

63.下面哪个可以改变容器的布局?( )

A. setLayout(aLayoutManager);

B. addLayout(aLayoutManager);

C. layout(aLayoutManager);

D. setLayoutManager(aLayoutManager);

解答:A

Java设置布局管理器setLayout()

64.在使用super和this关键字时,以下描述正确的是()

A、super()和this()不一定要放在构造方法第一行

B、this()和super()可以同时出现在一个构造函数中

C、this()和super()可以在static环境中使用,包括static方法和static代码块

D、在子类构造方法中,使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译失败

解答:D

super()是调用父类方法,this()是调用子类方法,子类方法中,只能放在方法的第一行,并且,他们两不能同时出现在一个构造函数中,也不能调用被static修饰的方法和代码块

65.提供Java存取数据库能力的包是()

A.java.sql

B.java.awt

C.java.lang

D.java.swing

解答:A

java.sql是JDBC的编程接口

java.awt和java.swing是做图像界面的类库

java.lang: Java 编程语言进行程序设计的基础类

66.不能用来修饰interface的有()

A.private

B.public

C.protected

D.static

解答:ACD

修饰接口可以是public和默认

67.下列说法错误的有()

A. 在类方法中可用this来调用本类的构造方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

D. 在类方法中绝对不能调用实例方法

解答:ACD

A.   在类方法中,被static修饰的方法里不能用this,在其他没有被static修饰的类中可以使用this,但不能调本类的构造方法

C.在类方法中可以调用其它类中的静态类方法

D.在类方法中可以通过实例化对象调用实例方法

68.从下面四段(A,B,C,D)代码中选择出正确的代码段()

A. abstract class Name {

    private String name;

    public abstract boolean isStupidName(String name) {}

    }

B. public class Something {

    void doSomething () {

      private String s ="";

      int l = s.length();

    }

    }

C. public class Something {

    public static void main(String[] args) {

      Other o = new Other();

      new Something().addOne(o);

    }

    public void addOne(final Other o) {

      o.i++;

    }

    }

   class Other {

    public int i;

   }

D. public class Something {

    public int addOne(final int x) {

      return ++x; }

    }

解答:C

A..抽象方法不能有方法体

B.方法中定义的是局部变量,不能用类成员变量修饰符private

D.final修饰为常量,常量的值不能被改变,所以不能作为参数变量

69.选择下面代码的运行结果:()。

  public class Test{

    public void method(){

      for(int i = 0; i < 3; i++){

        System.out.print(i);

      }

      System.out.print(i);

    }

  }

A.122

B.123

C.编译错误

D.没有任何输出

解答:C

i变量的作用范围是整个for循环,第二次输出语句的i并没有被定义

70.请看如下代码

  class Person {

    private int a;

    public int change(int m){

      return m;

    }

  }

  public class Teacher extends Person{

    public int b;

    public static void main(String arg[]){

      Person p = new Person();

      Teacher t = new Teacher();

      int i;

       // point x

    }

  }

下面哪些放在// point x?行是正确的?

A, i = m;

B, i = b;

C, i = p.a;

D, i = p.change(3);

E, i = t.b;

解答:DE

A.不同的作用域

B.静态方法中不能直接使用非静态成员变量

C.类外不能访问其它类私有的成员

D,E.在类方法中可以通过实例化对象调用类中的实例成员。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这