资源描述
Java练习题
一、选择题(每题1分,共30分)
1、以下程序的运行结果是:
public class Increment{
public static void main(String args[]){
int c;
c = 2;
System.out.println(c);
System.out.println(c++);
System.out.println(c);
}
}
A:A.2 2 2 B:B.2 3 3
C:C.2 2 3 D:D.3 4 4
2、以下关于继承的叙述正确的是
A:在Java中类只允许单一继承 B:在Java中一个类只能实现一个接口
C:在Java中一个类不能同时继承一个类和实现一个接口 D:在Java中接口只允许单一继承
3、关于以下程序段,正确的说法是
1. String s1=”abc”+”def”;
2. String s2=new String(s1);
3. if(s1= =s2)
4. System.out.println(“= = succeeded”);
5. if (s1.equals(s2))
6. System.out.println(“.equals() succeeded”);
A:行4与行6都将执行 B:行4执行,行6不执行
C:行6执行,行4不执行 D:行4、行6都不执行
4、应用程序的main方法中有以下语句,则执行后输出的结果是 ( )。
int[] x={125,21,5,168,98};
int min=x[0];
for(int i=1;i<x.length;i++){
if(x[i]<min)
min=x[i];
}
System.out.println(min);
A:125 B:5
C:98 D:168
5、下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;
}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);
}
}
A: 0 B:5
C: 11 D:2
6、能够支持javadoc命令的注释语句是
A:/**...// B:/*...*/
C:// D:/**...*/
7、File类是IO包中唯一表示磁盘文件信息的对象,它定义了一些与平台无关的方法来操纵文件。通过调用File类提供的各种方法,我们能够创建、删除文件、重命名文件、判断文件的读写权限及是否存在,设置和查询文件的最近修改时间等。下面的代码片段实现的是什么功能?
File file = new File("C:\\test.dat");
if (file.exists()) {
file.delete();
}
A:创建C:\test.dat。 B: 删除C:\test.dat。
C: 打开C:\test.dat文件输出流。 D: 移动C:\test.dat
8、char类型的取值范围是
A:2-7 ~27 -1 B:0~216-1
C:-215 ~215 -1 D:0~28-1
9、以下关于java异常说法不正确的是( )。
A:Throwable 类是 Java 语言中Error类和Exception类的父类。 B:当异常对象是Exception类(或其子类)的实例时,可以使用throw 语句抛出该异常对象
C:如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有异常对象的父类。 D:以上说法都不对。
10、Java语言的类间的继承关系是( )
A:多重的 B:单重的
C:线程的 D:不能继承
11、下列属于合法的Java标识符是
A:_cat B:5books
C:+static D:-3.14159
12、Java中
A: 一个子类可以有多个父类,一个父类也可以有多个子类 B: 一个子类可以有多个父类,但一个父类只可以有一个子类
C: 一个子类可以有一个父类,但一个父类可以有多个子类 D: 上述说法都不对
13、声明成员变量时,如果不使用任何访问控制符(public, protected, private),则以下哪种类型的类不能对该成员进行直接访问
A:同一类 B:同一包中的子类
C:同一包中的非子类 D: 不同包中的子类
14、有以下方法的定义,请选择该方法的返回类型
ReturnType method(byte x, double y) {
return (short)x/y*2;
}
A:byte B:short
C:int D:double
15、关于以下application的说明,正确的是
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
A:4行与9行不能通过编译,因为缺少方法名和返回类型 B:9行不能通过编译,因为只能有一个静态初始化器
C:编译通过,执行结果为:x=5 D:编译通过,执行结果为:x=3
16、有如下程序段:
int a = b = 5;
String s1 = "祝你今天考出好成绩!";
String s2 = s1;
则表达式a == b与s2 == s1的结果分别是:
A:true与true B:false与true
C:true与false D:false与false
17、下列关于线程优先级的说法中,正确的是
A:线程的优先级是不能改变的 B:线程的优先级是在创建线程时设置的
C:在创建线程后的任何时候都可以设置 D:B和C
18、下面语句在编译时不会出现警告或错误的是
A: float f=3.14; B: char c=”c”;
C: Boolean b=null; D: int i=10.0;
19、下列关于Java线程的说法那些是正确的( )
A:每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。 B:创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。
C:Thread类属于java.util程序包。 D:以上说法无一正确。
20、下面的程序段的功能是( )。
File file1=new File("d:\\xxx\\yyy\\zzz");
file1.mkdirs( );
A:在当前目录下生成子目录:\xxx\yyy\zzz B:生成目录: e:\xxx\yyy\zzz
C:在当前目录下生成文件xxx.yyy.zzz D:以上说法都不对
21、欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?
A:ArrayList myList=new Object(); B:List myList=new ArrayList();
C:ArrayList myList=new List(); D:List myList=new List();
22、下面说法不正确的是
A: 一个子类的对象可以接收父类对象能接收的消息; B: 当子类对象和父类对象能接收同样的消息时,它们针对消息产生的行为可能不同;
C: 父类比它的子类的方法更多; D: 子类在构造函数中可以使用super( )来调用父类的构造函数;
23、下列最终属性 i 的定义中,正确的是( )。
A: static final int i=100; B:final int i=1.2;
C: final i='w'; D: final char i;
24、下面声明数组的写法错误
A:A int a[ ]; B:B: int[ ] a;
C:C int[3][ ] a; D:D; int[ ][3] a;
25、Java编程所必须的默认引用包为
A: javsys包 B: java.lang包
C: java.util包 D:以上都不是
26、对于下列代码:
public class Sample{
long length;
public Sample(long l){ length = l; }
public static void main(String arg[]){
Sample s1, s2, s3;
s1 = new Sample(21L);
s2 = new Sample(21L);
s3 = s2;
long m = 21L;
}
}
下列哪些表达式返回值为'true'?
A: s1 = = s2; B: s2 = = s3;
C: m = = s1; D: s1.equals(m)
27、设有定义 int i = 6 ;,则执行以下语句后,i 的值为( )。
i += i - 1;
A:10 B:121
C:11 D:100
28、有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( )
A:2 7 8 12 35 B:12 35 8 7 2
C:35 12 8 7 2 D:8 7 12 35 2
29、有如下代码段:
1)
2) { if(unsafe()){//do something…}
3) else if(safe()){//do the other…}
4) }
其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?
A: public IOException methodName() B: public void methodName()
C:public void methodName() throw IOException D:public void methodName() throws IOException
30、给出下面代码:
1) class Parent {
2} private String name;
3} public Parent( ){}
4} }
5) public class Child extends Parent {
6} private String department;
7} public Child( ) {}
8} public String getValue( ){ return name; }
9} public static void main(String arg[]) {
10} Parent p = new Parent( );
11} }
12} }
那些行将引起错误( )
A: 第3行 B: 第6行
C: 第7行 D: 第8行
二、填空题(共10分)
31、在空白处填上合适的语句。
Public class ServerTimedOutException extends Exception {
private int port;
public ServerTimedOutException(String message, int port) {
super(message);
this.port = port;
}
public int getPort() {
return port;
}
}
class Client{
//在下行空白出填上声明抛弃ServerTimedOutException例外的语句
public void connectMe(String serverName) ______(1)_______
{
int success;
int portToConnect = 80;
success = open(serverName, portToConnect);
if (success == -1) {
/*在下行空白处填上抛出ServerTimedOutException例外的语句*/
________(2)_______
}
}
}
32、下面是一个实现了Runnable接口的小程序,程序通过多线程实现了以下功能:从1开始,每个两秒钟显示下一个连续的自然数,显示到直到10后结束。请根完成程序填空。
public class Test {
public void main(String args[]) {
A a=new A();
Thread t;
t=___(1)___; //创建线程对象
t.start();
}
}
public class A _____(2)_____ Runnable {
public void run() {
int counter=0;
while( counter<10 ) {
counter++;
try { Thread.sleep(2000); }
catch ( InterruptedException e ) {}
System.out.println(counter);
}
}
}
33、下面的程序的功能是从1~36的整数中随机选取7个数:第1次随机选择1~36中的一个数,第2次从剩下的35个数(第1次选中的数不包括其中)中随机选择一个数,…,重复这个过程,直到选中7个整数。请完成程序填空。
import java.util.*;
public class Select7From36 {
public static void main(String[] args) {
Random rd= new Random();
//创建动态数组
ArrayList allNum=new ArrayList();
//创建有7个元素的Integer数组
Integer result[]=____(1)____;
int x;
for(int i=1;i<=36;i++){
allNum.add(new Integer(i));
}
for(int i=0;i<=6;i++){
x=rd.nextInt(36-i)+1;
result[i]=(Integer)allNum.get(x);
allNum.remove(x);
}
for(int i=0;i<result.length;i++){
System.out.print(____(2)____ +" ");
}
}
}
34、下列程序的功能是:输入一个姓名,程序运行后,输出“姓名Welcome you!”。例如,输入“张三”,则输出“张三Welcome you!”。请在下面横线处填入正确的方法名,使程序可以正确运行。
Import java.awt.*;
import java.awt.event*;
public class WelcomeYou{
public static void main(String args[])
{
new FrameInOut();
}
class FrameInOut extends Frame implements ActionListener
{
Label prompt;
TextField input,output;
Button btnn;
void FramInOut()
{
prompt=new Label(″Please input your name″);
input=new TextField(10);
output=new TextField(25);
btnn=new Button(″Closs″);
_____________________ (new FlowLayout()); //设置布局对象
add(prompt);
add(input);
add(output);
add(btnn);
input.addActionListener(this);
btnn.addActionListener(this);
setSize(300200);
validate();
}
public void actionPerformed(ActionEvent e) //事件处理接口方法
{
if(______________________==input) //获得事件源
output.setText(________________+″Welcome you!″);//在output中输出字符串
else
{
dispose();
Systemexit(0)
}
}
}
35、下面是一个Java Application 的主类的定义,其功能是输出所有命令行参数。
import java.io.*;
public class MyClass
{
public static void main(String args[ ])
{
if( args.length !=___)
for(int i=0; i < args.length; i++)
System.out.println(___________);
else System.out.println("没有命令行参数");
}
}
36、下面是一个类的定义:
public class ____________
{
int x, y;
Myclass ( int i, _______) // 构造函数
{
x=i;
y=j;
}
}
37、Applet程序:有2个复选框,其名称为“玩耍”和“学习”,根据选择情况,分别显示“我就喜欢玩耍”,“我只喜欢学习”,“两个我都喜欢”。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class testCheck__________________________//定义类testCheck
{
Checkbox c1,c2;
String s="";
public void init()
{
c1=new Checkbox("玩耍");
c1.addItemListener(this);
add(c1);
c2=new Checkbox("学习");
c2.addItemListener(this);
add(c2);
}
______________________________________(ItemEvent e) //Checkbox选择事件响应处理方法
{
if(c1.getState() & c2.getState()) //如果两个都选择
s="玩耍和学习我都喜欢";
else if(c1.getState())
s="我就喜欢玩耍";
else if(c2.getState())
s="我只喜欢学习";
else
s="";
repaint(); //重画
}
public void paint(Graphics g)
{
________________________________ //在(20,80)处显示字符串s
}
}
对应HTML文件
<html>
<applet code="testCheck.class" width=300 height=200></applet>
</html>
38、下列程序的功能是判断某一年是否为闰年。请在横线处填入适当内容,使程序能够正确运行。
import java.io.*;
public class LeapYear{
public static void main(String arge[]) throws IOException{
InputStreamReader ir;
BufferedReadwe in;
ir=new InputStreamReader(Systemin);
in=new BufferedReader(ir);
SystemOutprintln(″输入年份是:″)
String s= _______(1)________
int year=IntegerparseInt(s);
if (____________(2)___________)
{
Systemoutprintln(″″+year+″年是闰年。″)
}
else
{
Systemoutprintln(″″+year+″年不是闰年。″)
}
}
}
39、下面是一个小程序的主类myprogram的定义, 其中A、B是该主类所在源程序中已定义的另两个类的类名:
import java awt.*;
import java applet.*;
public class myprogram extends Applet//定义小程序的主类
{
A a; B b;
public ________ init( )
{ a=new A( ); b=_____ B( ); }
}
40、下列程序中,指定变量b=50为字节类型,变量f=0.55F为单精度实型,变量1=0xfffL为64位整型,并将该三个变量打印输出.请将程序补充完整.
import java.io.*;
public class Assign}
public static void main(String args[]){
_______b=50;
_______f=0.55F;
_______l=0xfffL;
System.out.println("b="+b);
System.out.println("f="+f);
System.out.println("l="+l);
}
}
三、程序阅读(共20分)
41、现有一个类定义如下:
class student
{
String name;
int age;
int score=88;
student(String a1,int a2,int a3)
{name=a1; age=a3; score=a2;}
}
在使用该类时,已使用下面语句生成了该类的对象:
student s1,s2;
s1=new student("张三",20,33);
s2=new student();
问题:
1)s1.name,s1.age,s1.score的值各是什么?
2)s2.name,s2.age,s2.score的值各是什么?
42、阅读下面的程序代码,并回答问题((1)问3分,(2)问3分,共6分)。
String s1=new String("abcde");
String s2=new String("abcde");
boolean b1=s1.equals(s2);
boolean b2=s1==s2;
System.out.print(b1+" "+b2);
(1)程序段执行后,在命令行的输出结果如何?
(2)解释输出(1)的结果的原因?
43、阅读下面的程序,回答以下问题
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Applet1 extends Applet implements ActionListener
{
Label aa;
TextField t1;
int i=0;
public void init()
{
aa=new Label("请输入一个整数:");
add(aa);
t1=new TextField(10);
add(t1);
t1.addActionListener(this);
}
public void paint(Graphics g)
{
g.drawString("a="+( ++i*--i),20,60);
g.drawString("i="+( i),20,80);
}
public void actionPerformed(ActionEvent e)
{
i=Integer.parseInt(t1.getText());//转化为整数
repaint();
}
}
问题:
1)程序开头的 import java.applet.* ; 的含义是什么?
2)ActionListener是类还是接口? 程序中哪个方法是ActionListener中的方法,其功能为何?
3)若在文本域中输入6并回车,程序输出什么?
44、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是什么。
Int s = 0 ;
for ( int I = 0 ; I < MyIntArray.length ; I + + )
if ( I % 2 = = 1 ) s += MyIntArray[i] ;
System.out.println( s );
45、下面是一个排序的程序:
import java.io.*;
public class Test56_Sort
{
public static void main(String args[ ])
{
int[] a={42,99,5,63,95,36,2,69,200,96};
System.out.println("排序前的数据序列:");
ShowArray(a);
Sort(a);
System.out.println("排序后的数据序列:");
ShowArray(a);
}
public static void Sort(int[] x)
{
int w;
for(int i=1; i<x.length; i++)
{
for(int j=0; j<x.length-1; j++)
if(x[j]>x[j+1])
{ w=x[j]; x[j]=x[j+1]; x[j+1]=w; }
/* if(i==1||i==2) ShowArray(x);
if(i==2) break; */
}
}
public static void ShowArray(int b[])
{
for(int i=0; i<b.length; i++)
System.out.print(" "+b[i]);
System.out.println(" ");
}
}
问题: 如果将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么?
46、 import java.awt.*;
import java.applet.*;
public class Test51` extends Applet
{
float[ ] x = {1.2, 3.4, 5.6, 7.8};
public void paint(Graphics g)
{
int s=0;
for( int i = 0; i < x.length; i++ )
s += (int)x[i];
g.drawString(" " + s, 30, 60);
}
}
问题:
1)程序的输出结果是什么?
2)方法paint()中的循环体 s += (int)x[i]; 能写为 s +=x[i]; 吗? 为什么?
47、阅读下面的程序,并回答问题((1)问3分,(2)问3分,共6分)。
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException {
BufferedReader buf=new BufferedReader(
new InputStreamReader(System.in));
while(true) {
String str=buf.readLine();
if(str.equals("quit"))
break;
int x=Integer.parseInt(str);
System.out.println(x*x);
}
}
}
编译运行上面的程序:
(1)从键盘输入10,回车后输出的结果如何?
(2)从键盘输入exit,回车后程序能正确执行吗?为什么?
48、写出下面的程序编译、运行后的结果(6分)。
public class Test{
public static void main(String args[]) {
new Student("Tom",'m',90,88);
new Student("Jack",'m',66,89);
new Student("Mary",'f',76,86);
System.out.println("name\tsex\tchinese\tenglish");
Student.print();
}
}
class Student {
protected String name;
protected char sex;
protected int chinese;
protected int english;
protected Student next;
static Student list;
Student(String name, char sex, int chinese,int english) {
this.name=name;
this.sex=sex;
this.chinese=chinese;
展开阅读全文