java基础选择题--15

一、 选择

1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?

A ArrayList myList=new Object();

B List myList=new ArrayList();

C ArrayList myList=new List();

D List myList=new List();

2.paint()方法使用哪种类型的参数?

A Graphics

B Graphics2D

C String

D Color

3.指出正确的表达式 C

A byte=128;

B Boolean=null;

C long l=0xfffL;

D double=0.9239d;

4.指出下列程序运行的结果 B

public class Example{

String str=new String("good");

char[]ch={'a','b','c'};

public static void main(String args[]){

Example ex=new Example();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+" and ");

Sytem.out.print(ex.ch);

}

public void change(String str,char ch[]){

str="test ok";

ch[0]='g';

}

}

A good and abc

B good and gbc

C test ok and abc

D test ok and gbc

5.运行下列程序, 会产生什么结果

public class X extends Thread implements Runable{

public void run(){

System.out.println("this is run()");

}

public static void main(String args[])

{

Thread t=new Thread(new X());

t.start();

}

}

A 第一行会产生编译错误

B 第六行会产生编译错误

C 第六行会产生运行错误

D 程序会运行和启动

在Java中,当你想要一个类继承自Thread类,并且想要它作为线程运行,你只需要覆盖run()方法即可。但是,在你的代码中,你试图让X类同时继承Thread并实现Runnable接口,这是不允许的,因为Java不支持多重继承(除了接口的多重实现)。

6.要从文件" file.dat"文件中读出第10个字节到变量C中,下列哪个方法适合? A

A FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();

B FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();

C FileInputStream in=new FileInputStream("file.dat"); int c=in.read();

D RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();

7.容器被重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变?B

A CardLayout

B FlowLayout

C BorderLayout

D GridLayout

8.给出下面代码:

public class Person{

static int arr[] = new int[10];

public static void main(String a[])

{

System.out.println(arr[1]);

}

}

那个语句是正确的? C

A 编译时将产生错误;

B 编译时正确,运行时将产生错误;

C 输出零;

D 输出空。

9.哪个关键字可以对对象加互斥锁? B

A transient

B synchronized

C serialize

D static

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

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

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

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

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

11.下列代码哪几行会出错: C

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 line 4

B line 6

C line 7//,第7行会导致编译错误,因为变量k在使用前没有初始化。要修复这个错误,你需要在声明k的同时给它一个初始值

D line 8

二、多项选择

1.执行下列代码后,哪个结论是正确的 String[] s=new String[10];B D

A s[10] 为 "";

B s[9] 为 null;

C s[0] 为 未定义

D s.length 为10

2.下面的表达式哪个是正确的?AE

A String s="你好";int i=3; s+=i;

B String s="你好";int i=3; if(i==s){ s+=i};

C String s="你好";int i=3; s=i+s;

D String s="你好";int i=3; s=i+;

E. String s=null; int i=(s!=null)&&(s.length>0)?s.length():0;

3.选出合理的标识符 AC

A _sys1_lll

B 2mail

C $change

D class

4.哪个布局管理器使用的是组件的最佳尺寸( preferred size)AE

A FlowLayout

B BorderLayout

C GridLayout

D CardLayout

E.GridBagLayout

5.下列哪个方法可用于创建一个可运行的类? AE

A public class X implements Runable{ public void run(){ ......} }

B public class X implements Thread{ public void run(){ ......} }??

C public class X implements Thread{ public int run(){ ......} }

D public class X implements Runable{ protected void run(){ ......} }

E.public class X implements Thread{ public void run(){ ......} }

A. public class X implements Runnable { public void run(){ ......} }
这是正确的。Runnable 是一个接口,它定义了一个没有返回值且不抛出任何受检查异常的方法 run()。一个类实现 Runnable 接口并覆盖 run() 方法后,可以创建一个该类的实例,并将其作为参数传递给 Thread 类的构造函数来创建一个新的线程。

C. public class X implements Thread { public int run(){ ......} }
这是不正确的。run() 方法在 Thread 类中的定义是返回 void 而不是 int。因此,你不能改变它的返回类型。

D. public class X implements Runnable { protected void run(){ ......} }
这是不正确的。虽然技术上你可以将 run() 方法的访问修饰符从 public 改为 protected,但通常我们不会这样做,因为当 Runnable 的实例被传递给 Thread 的构造函数时,Thread 类期望 run() 方法是 public 的。

E. public class X implements Thread { public void run(){ ......} }
这实际上是选项B的重复,但仍然是正确的。一个类可以通过继承 Thread 类并重写 run() 方法来创建一个新的线程。

所以,正确的选项是 A 和 E(但请注意,选项A中的 Runable 应更正为 Runnable)。

6.下面哪个方法可以在任何时候被任何线程调用? EFD

A notify()

B wait()

C notifyAll()

D sleep()

E.yield()

F.synchronized(this)

7.构造BufferedInputStream的合适参数是哪个? CA

A BufferedInputStream

B BufferedOutputStream

C FileInputStream

D FileOuterStream

E. File

8.下列说法正确的是 CB

A java.lang.Clonable是类

B java.lang.Runnable是接口

C Double对象在java.lang包中

D Double a=1.0是正确的java语句

A. java.lang.Cloneable是类
这是不正确的。java.lang.Cloneable 是一个标记接口(marker interface),它没有定义任何方法。它的主要目的是允许对象被克隆。当一个类实现了 Cloneable 接口并且覆盖了 Object 类的 clone() 方法时,该类的对象就可以被克隆了。但它本身并不是一个类。

B. java.lang.Runnable是接口
这是正确的。java.lang.Runnable 是一个接口,它定义了一个名为 run() 的方法,该方法没有参数且没有返回值。这个接口通常被用于定义那些计划由线程执行的任务。

C. Double对象在java.lang包中
这是正确的。Double 类是 Java 的基本数据类型 double 的包装类,它位于 java.lang 包中。这个包包含了 Java 编程语言的核心类。

D. Double a=1.0是正确的java语句
这是不正确的。在 Java 中,你不能直接将一个 double 类型的字面量赋值给一个 Double 类型的变量,除非进行了自动装箱(autoboxing)。但在这个例子中,1.0 是一个 double 类型的字面量,而不是一个 Double 对象。正确的赋值方式是使用 Double 类的静态方法 valueOf(),如 Double a = Double.valueOf(1.0);,或者让 Java 进行自动装箱,如 Double a = 1.0D;(注意 D 后缀表示这是一个 double 类型的字面量)。

所以,根据题目的要求,选项 B 和 C 是正确的。

9.指出正确的表达式 BA

A double a=1.0;

B Double a=new Double(1.0);

C byte a = 340;

D Byte a = 120;

10.定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:CD

A private class MyClass extends Object

B class MyClass extends Object

C public class MyClass

D public class MyClass extends Object

11.指出下列哪个方法与方法public void add(int a){}为合理的重载方法。CD

A public int add(int a)

B public void add(long a)  ?????

C public void add(int a,int b)

D public void add(float a)

在Java中,方法重载(Overloading)指的是在同一个类中,有多个方法具有相同的名称但参数列表不同(参数类型、参数个数或参数顺序不同)。

A. public int add(int a)
这个方法与给定的方法名称相同,但返回类型不同(void vs int)。在Java中,方法的返回类型不是重载的一部分,因此这个方法不能作为合理的重载方法。

B. public void add(long a)
这个方法与给定的方法名称相同,但参数类型不同(int vs long)。尽管参数类型不同,但在Java中,基本数据类型int和long之间不存在自动装箱/拆箱,所以它们被认为是不同的方法,因此这个方法是一个合理的重载方法。

C. public void add(int a, int b)
这个方法与给定的方法名称相同,但参数个数不同(一个参数 vs 两个参数)。因此,这是一个合理的重载方法。

D. public void add(float a)
这个方法与给定的方法名称相同,但参数类型不同(int vs float)。尽管int和float都是数值类型,但它们是不同的类型,因此这个方法也是一个合理的重载方法。

所以,根据Java的方法重载规则和题目给出的选项,合理的重载方法是C和D。

答案:C和D。

12.如果下列的方法能够正常运行,在控制台上将显示什么? ACD

public void example(){

try{

unsafe();

System.out.println("Test1");

}

catch(SafeException e)

{System.out.println("Test 2");}

finally{System.out.println("Test 3");}

System.out.println("Test 4");

}

A Test 1

B Test 2

C Test 3

D Test 4

13.下列哪些情况可以终止当前线程的运行? ABD

A 抛出一个例外时。

B 当该线程调用sleep()方法时。

C 当创建一个新线程时。 //
创建新线程只是为线程的执行提供了一个起点,并不会导致任何现有线程的终止。新线程会开始其生命周期,但现有线程会继续执行(除非它们自己决定终止)。所以,这个选项是不正确的。

D 当一个优先级高的线程进入就绪状态时。

答案

一、 选择题答案

选择第1题

B

选择第2题

A

选择第3题

C

选择第4题

B

选择第5题

A

选择第6题

A

选择第7题

B

选择第8题

C

选择第9题

B

选择第10题

B

选择第11题

C

二、多项选择题答案

多项选择第1题

BD多项选择第2题

AE

多项选择第3题

AC

多项选择第4题

AE

多项选择第5题

AE

多项选择第6题

DEF

多项选择第7题

AC

多项选择第8题

BC

多项选择第9题

AB

多项选择第10题

CD

多项选择第11题

CD

多项选择第12题

ACD

多项选择第13题

ABD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值