JAVA程序设计练习题集答案

本文深入探讨Java编程的基础知识和实际应用,包括判断题解析、单选题解答、程序填空、函数题和编程题实战,涵盖数组操作、类与接口实现、异常处理、输入输出流、数学运算和算法挑战,适合初学者和进阶者巩固Java技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、判断题

  1. String字符串在创建后可以被修改。 ( 0 )
  2. 引用一个类的属性或调用其方法,必须以这个类的对象为前缀。 ( 0 final 类名 )
  3. 当调用一个正在进行线程的stop()方法时,该线程便会进入休眠状态。 ( 0 )
  4. 如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类。 ( 1 )
  5. 构造函数名应与类名相同,返回类型为void。 ( 0 )
  6. 把数组中元素按某种顺序排列的过程叫做查找。 ( 0 )
  7. 对于abstract类,不能创建该类的对象。 ( 1 )
  8. 所有异常都必须捕获。 ( 0 )
  9. 可以使用protected修饰符来防止方法和数据被不同包的非子类访问。 ( 1 )
  10. 在Java程序中,可以使用private来修饰一个类。 ( 1 )
  11. 不允许使用final来修饰abstract方法。 ( 0 )
  12. 可以使用protected修饰符来防止方法和数据被不同包的非子类访问。 ( 1 )
  13. An event can be defined as a signal to the program that something has happened. ( )
  14. An event is an object created from an event source. ( )
  15. A program cannot choose to ignore an event. ( )
  16. An event in JavaFX is an object of the javafx.event.Event class.。 ( )
  17. InputStream类和OutputStream类是所有二进制I/O的根类。 ( 1 )
  18. InputStream and OutputStream read and write 8-bit data. ( 1 )

二、单选题

  1. Java程序默认引用的包是( b )。
    A.java.awt包
    B.java.lang包
    C.java.util包
    D.java.text包
  2. 以下代码的输出结果为( D )。
public class Pass{    
     static int j = 20;
     public void amethod(int x){
         x = x*2;
         j = j*2;
    }
    public static void main(String args[]){
        int i = 10;	   
        Pass p = new Pass();
        p.amethod(i);
        System.out.println(i+" and "+j); 
  }
}

A.10 and 20
B.错误:方法参数与变量不匹配
C.20 and 40
D.10 and 40

  1. 若A1、A2为已定义的接口 ,以下接口定义中没有语法错误的是( A ) 。
    A.interface B { void print();}
    B.interface B { void print() { } }
    C.abstract interface B { void print() }
    D.abstract interface B extends A1,A2 { abstract void print(){ };}

  2. 将以下哪种方法插入行3是不合法的。 ( A )
    1.public class Test1{
    2. public float aMethod(float a,float b){ }
    3.
    4.}

A.public float aMethod(float c,float d){ }
B.public int aMethod(int a, int b){ }
C.private float aMethod(int a,int b,int c){ }
D.public float aMethod(float a, float b,float c){ }

  1. 你怎样强制对一个对象立即进行垃圾收集? ( E )
    A.调用System.gc(), 同时传递要进行垃圾收集对象的引用
    B.调用 Runtime.gc()
    C.给这个对象的所有引用设置一个新的值(例如null)
    D.调用 System.gc()
    E.垃圾收集是不能被强迫立即执行
  2. Which statement about the garbage collection mechanism are true? ( )
    A.The programmer can indicate that a reference through a local variable is no longer of interest.
    B.The programmer has a mechanism that explicity and immediately frees the memory used by Java objects.
    C.Garbage collection require additional programe code in cases where multiple threads are running.
    D.The garbage collection mechanism can free the memory used by Java Object at explection time.
  3. 关于以下程序代码的说明正确的是( B )。
1class  HasStatic{
2private  static  int  x=1003public  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.程序通过编译,输出结果为:x=103
B.程序通过编译,输出结果为:x=102
C.5行不能通过编译,因为引用了私有静态变量
D.10行不能通过编译,因为x是私有静态变量

  1. Which of the following statements about the Java keywords is true? ( )
    A.they can never be used as identifiers
    B.they can never be used in comments
    C.they are not case-sensitive
    D.they can also be used as identifiers

  2. 方法体内定义的变量称局部变量,下述关于局部变量的说法中错误的是( A )。
    A.局部变量不能与类中的成员变量同名
    B.局部变量未经赋值不能使用
    C.局部变量仅在所定义的代码块内(花括号对内)有效
    D.局部变量不能加修饰词修饰

  3. 有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是( D ).
    A.a1.class
    B.a1
    C.都对
    D.a1.java

  4. A JavaFX action event handler contains a method __. ( )
    A.public void actionPerformed(ActionEvent e)
    B.public void handle(Event e)
    C.public void actionPerformed(Event e)
    D.public void handle(ActionEvent e)

  5. A JavaFX event handler for event type T is an instance of _. ( )
    A.EventHandler
    B.ActionEvent
    C.Action
    D.EventHandler

  6. To handle the mouse click event on a pane p, register the handler with p using __. ( )
    A.p.setOnMouseClicked(handler);
    B.p.setOnMouseReleased(handler);
    C.p.setOnMouseDragged(handler);
    D.p.setOnMousePressed(handler);

  7. Fill in the code below in the underline: ( )

public class Test {
public static void main(String[] args) {
Test test = new Test();
test.setAction(__);
}
public void setAction(T1 t) {
t.m();
}
}
interface T1 {
public void m();
}

A.(e) -> {System.out.print("Action 1! ")}
B.(e) -> System.out.print("Action 1! ")
C.() -> System.out.print("Action 1! ")
D.System.out.print("Action 1! ")

  1. The statement for registering a listener for processing list view item change is _. ( )
    A.lv.getItems().addListener(e -> {processStatements});
    B.lv.addListener(e -> {processStatements});
    C.lv.getSelectionModel().selectedItemProperty().addListener(e -> {processStatements});
    D.lv.getSelectionModel().addListener(e -> {processStatements});
  2. 下面哪个流类属于面向字符的输入流( D ) 。
    A.BufferedWriter
    B.FileInputStream
    C.ObjectInputStream
    D.InputStreamReader
  3. FilterOutputStream is the parent class for BufferedOutputStream, DataOutputStream and PrintStream. Which classes are valid argument for the constructor of a FilterOutputStream? ( )
    A.InputStream
    B.OutputStream
    C.RandomAccessFile
    D.StreamTokenizer
  4. 如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象( A )。
    A.FileInputStream
    B.FileOutputStream
    C.DataOutputStream
    D.FileWriter
    19.Suppose there is no file Hello.txt in the current directory. Run the program: ( )
import java.io.*;
public class ABC {
	public static void main(String argv[]) throws Exception {
		ABC m=new ABC();
		System.out.println(m.ff());
	}
	
	public int ff() {
		try {
			FileInputStream dis=new FileInputStream("Hello.txt");
		} catch (FileNotFoundException fne) {
			System.out.print("No such file found, ");
			throw fne;
		} finally {
			System.out.print("Doing finally, ");
		}
		return 0;
	}
}

A.No such file found,
B.No such file found ,0
C.No such file found, Doing finally,
D.No such file found, Doing finally, 0

  1. Below is the function header for write() in OutputStream
    void write(int b)
    . Now given code below, what would be the size and the content of the output file?( )
    int i=0xcafebabe;
    FileOutputStream out = new FileOutputStream(“output”);
    out.write(i);
    A.1 byte and 0xbe
    B.1 byte and 0xca
    C.4 bytes as 0xcafebabe
    D.4 bytes as 0xbebafeca
  2. For InputStream.read(), the read() with no parameters, which statement below is correct? ( )
    A.read() returns int, because it has to return EOF to indicate the end of the file
    B.read() returns byte, because it reads a byte from the stream
    C.read() returns char, because it reads a char from the stream
    D.read() returns int, as the number of bytes it just read

三、程序填空题
17. 相同的数组。如果两个数组list1和list2的内容相同,那么就说它们是相同的。使用下面的程序可以判断两个数组是否相同,请填空补全程序。

import java.util.*;

public class Main {

   public static void main(String[] args) {
      Scanner input = new Scanner(System.in);

      int size1 = input.nextInt();
      int[] list1 = new int[size1];
      // Enter values for list1
      for (int i = 0; i < list1.length; i++)
         list1[i] = input.nextInt();

      int size2 = input.nextInt();
      int[] list2 = new int[size2];
      // Enter values for list2
      for (int i = 0; i < list2.length; i++)
         list2[i] = input.nextInt();
      input.close();

      if (equals(list1,list2)) {
         System.out.println("Two lists are identical");
      } else {
         System.out.println("Two lists are not identical");
      }
   }

   public static boolean equals(int[] list1, int[] list2) {

      if (list1.length != list2.length)
	         return false;
      Arrays.sort(list1);
      Arrays.sort(list2);
      for (int i = 0; i < list1.length; i++)
         if (list1[i] != list2[i])
            return false;

      return true;
   }
}

四、函数题

1 创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
public abstract double getArea(); // 抽象方法 求面积
public abstract double getPerimeter(); // 抽象方法 求周长
}
直角三角形类的构造函数原型如下:
RTriangle(double a, double b);
其中 a 和 b 都是直角三角形的两条直角边。
裁判测试程序样例:

import java.util.Scanner;
import java.text.DecimalFormat;

interface IShape {
    public abstract double getArea();

    public abstract double getPerimeter();
}

/*你写的代码将嵌入到这里*/
class RTriangle implements IShape {

	public RTriangle(double a, double b) {
		this.a = a;
		this.b = b;
	}
	public double getArea() {
		return a * b / 2.0;
	}
	public double getPerimeter() {
		return a + b + (Math.sqrt(a * a + b * b));
	}
	private double a;
	private double b;
}

public class Main {
    public static void main(String[] args) {
        DecimalFormat d = new DecimalFormat("#.####");
        Scanner input = new Scanner(System.in);
        double a = input.nextDouble();
        double b = input.nextDouble();
        IShape r = new RTriangle(a, b);
        System.out.println(d.format(r.getArea()));
        System.out.println(d.format(r.getPerimeter()));
        input.close();
    }
}

输入样例:
3.1 4.2
输出样例:
6.51
12.5202

2.求正n边形的面积和周长 (10 分)

在一个正n边形(Regular Polygon)中,所有边的边长都相等,且所有角的度数相同(即这个多边形是等边、等角的)。我们已经从下列接口IShape实现了一个正n边形类RegularPolygon。其构造方法为:RegularPolygon(int n,double side); 其中n为边数,side为边长。
从键盘输入正n边形的边数n和边长a,请编程计算该正n边形的面积和周长。

interface IShape {// 接口
double getArea(); // 求面积
double getPerimeter();// 求周长
}
裁判测试程序样例:

interface IShape {// 接口

double getArea(); // 求面积

double getPerimeter();// 求周长

}
/* 这里有正n边形类RegularPolygon的实现*/

public class Main {
    public static void main(String[] args) {

        /* 你提交的代码将嵌入到这里 */ 
        // 类似代码,简直是侮辱智商
        Scanner input = new Scanner(System.in);
		double a = input.nextDouble();
		double b = input.nextDouble();
		RTriangle rtt = new RTriangle(a, b);
		System.out.printf("%.4f\n", rtt.getArea());
		System.out.printf("%.4f\n", rtt.getPerimeter());

    }
}

输入样例:

在这里给出一组输入。例如:
5
7

输出样例:

在这里给出相应的输出。要求保留4位小数,例如:
84.3034
35

五、编程题

1 求解给定字符串的前缀。

输入格式:

输入数目不定的多对字符串,每行两个,以空格分开。 例如:
filename filepath
Tom Jack

输出格式:

返回两个字符串的最大前缀,例如:
The common prefix is file
No common prefix

输入样例:

filename filepath
Tom Jack

输出样例:

The common prefix is file
No common prefix

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.lang.*;

public class test6 {
	public static void prefix(String s1, String s2) {
		StringBuffer sb = new StringBuffer();
		int shortlen = s1.length() < s2.length() ? s1.length() : s2.length();

		for (int i = 0; i < shortlen; i++) {
			if (s1.charAt(i) == s2.charAt(i))
				sb.append(s1.charAt(i));
			else
				break;
		}
		if (sb.length() == 0)
			System.out.println("No common prefix");
		else
			System.out.println("The common prefix is " + sb);
	}

	public static void main(String[] args) throws IOException {
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2 = new StringBuffer();
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			String line = reader.readLine();
			if (line.equals("")) {
				break;
			}
			int i;
			for (i = 0; i < line.length(); i++)
				if (line.charAt(i) == ' ')
					break;
			prefix(line.substring(0, i - 1), line.substring(i + 1, line.length()));
		}
	}
}

(Scanner)input.nextLine() 直接读取一行 ,不以空格划分

2 学生类-构造函数

定义一个有关学生的Student类,内含类成员变量: String name、String sex、int age,所有的变量必须为私有(private)。
(1).编写有参构造函数:
能对name,sex,age赋值。
(2).覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
(3).对每个属性生成setter/getter方法
(4).main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。

输入样例:

tom 15 male

输出样例:

Student [name=‘tom’, sex=‘male’, age=15]
// 不想写了,太浪费时间了,就贴一个实验中做过的题吧,与之类似

设计一个学生类Student,类有成员变量姓名、年龄,有“学习”方法。
Student类派生出本科生类,本科生类派生出研究生类,
本科生类增加专业和学位属性,覆盖学习方法。
研究生类增加研究方向属性,覆盖学习方法。
每个类都有显示方法,用于输出属性信息。
编写测试类测试这三个类。
1. 源代码:
/*Student 类*/
import java.util.*;
import java.lang.*;
public class Student {
	public Student(String na, int ag) {
		name = na;
		age = ag;
	}
	public void study() {
		System.out.println("I'am a student ,I'am studying !!!!!");
	}
	public void print() {
		System.out.print("name= " + name + " ,age= " + age);
	}
	private String name;
	private int age;
}
/*benke类*/
import java.util.*;
import java.lang.*;
public class benke extends Student {
	public benke(String name,int age,String ma,String deg) {
		super(name,age);
		major = ma ;
		degree = deg;
	}
	@Override
	public void study() {
		System.out.println("I'am a benke ,I'am studying !!!!!");
	}
	public void print() {
		super.print();
		System.out.print(" major= " + major + ", degree= " + degree);
	}
	private String major;
	private String degree;
}
/*Graduate 类*/
import java.util.*;
import java.lang.*;
public class Graduate extends benke {
	public Graduate(String name, int age, String ma, String deg, String dir) {
		super(name, age, ma, deg);
		research_dir = dir;
	}
	@Override
	public void study() {
		System.out.println("I'am a Graduate ,I'am studying !!!!!");
	}
	public void print() {
		super.print();
		System.out.print(" research_dir= " + research_dir);
	}
	private String research_dir;
}
/*测试类*/
import java.util.*;
import java.lang.*;
public class test {
	public static void main(String[] args) {
		Student st = new Student("小王",26);
		st.print();
		System.out.println();
		st.study();
		System.out.println();
		benke  ben = new benke("小张",28,"CS","CS_degree");
		ben.print();
		System.out.println();
		ben.study();
		System.out.println();
		Graduate gg = new Graduate("小刘",36,"艺术","艺术_degree","movie");
		gg.print();
		System.out.println();
		gg.study();
	}
}

3.直角三角形类 (10 分)

创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。

interface IShape {// 接口
// 抽象方法 求面积
public abstract double getArea();
// 抽象方法 求周长
public abstract double getPerimeter(); }
请编程从键盘输入两条直角边长值,创建一个直角三角形对象,然后输出直角三角形的面积和其周长。保留4位小数。

输入格式:

输入两条直角边长值。例如:3 4。

输出格式:

在这里输出直角三角形的面积和周长。例如: 6 12

输入样例:

3.1 4.2

输出样例:

6.51
12.5202

import java.util.*;
import java.lang.*;

/*1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

3.接口中的方法都是公有的*/

interface IShape { // 接口
	// 抽象方法 求面积
	public abstract double getArea();

	// 抽象方法 求周长
	public abstract double getPerimeter();
}

class RTriangle implements IShape {

	public RTriangle(double a, double b) {
		this.a = a;
		this.b = b;
	}

	public double getArea() {
		return a * b / 2.0;
	}

	public double getPerimeter() {
		return a + b + (Math.sqrt(a * a + b * b));
	}

	private double a;
	private double b;
}

public class test5 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		double a = input.nextDouble();
		double b = input.nextDouble();
		RTriangle rtt = new RTriangle(a, b);
		System.out.printf("%.4f\n", rtt.getArea());
		System.out.printf("%.4f\n", rtt.getPerimeter());
	}

}

4.天不假年

程序填空题。根据题目要求完善下面的代码。请提交完整代码。 “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。 Person类的setAge方法用于更新年龄。 如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int age;
        age = in.nextInt();
        Person p = new Person(age);
        age = in.nextInt();
        try{
            p.setAge(age); 
        }catch(AgeException e){
        }
    }
}
class Person{
   int age;
   public Person(int age){
       this.age = age;
   }
   public void setAge(int age) throws AgeException {
       if(this.age <=age){
          this.age = age;
       }else{
         throw new AgeException();
       }
   }
}
class AgeException extends Exception{
}

输入格式:

输入在一行中给出2个绝对值不超过100的正整数A和B。

输出格式:

在一行中输出一个字符A或者B。

输入样例:

50 18

输出样例:

B

import java.util.*;
import java.lang.*;

public class test4 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int age;
		age = in.nextInt();
		Person p = new Person(age);
		age = in.nextInt();
		try {
			p.setAge(age);
		} catch (AgeException e) {
			System.out.println("B");
		} finally {
		}
	}
}

class Person {
	int age;

	public Person(int age) {
		this.age = age;
	}

	public void setAge(int age) throws AgeException {
		if (this.age <= age) {
			this.age = age;
			System.out.println("A");
		} else {
			throw new AgeException();
		}
	}
}

class AgeException extends Exception {
}

5. 找素数 (10 分)

请编写程序,从键盘输入两个整数m,n,找出等于或大于m的前n个素数。

输入格式:

第一个整数为m,第二个整数为n;中间使用空格隔开。例如:
103 3

输出格式:

从小到大输出找到的等于或大于m的n个素数,每个一行。例如:
103
107
109

输入样例:

9223372036854775839 2

输出样例:

9223372036854775907
9223372036854775931

import java.util.*;
import java.lang.*;
import java.math.BigInteger;

public class test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		BigInteger m = input.nextBigInteger();
		int n = input.nextInt();

		int temp = n;
		for (BigInteger i = m; temp > 0; i = i.add(BigInteger.ONE)) {
			if (isPrime(i)) {
				temp--;
				System.out.println(i);
			}
		}
	}
	public static boolean isPrime(BigInteger a) {
		return a.isProbablePrime(50);
	}
}

6. 大数整除 (10 分)

请编写程序,从键盘输入一个整数n,找出大于long.MAX_VALUE且能被n整除的前3个数字。

输入格式:

输入一个作为除数的整数n,例如: 17

输出格式:

输出大于long.MAX_VALUE且能被n整除的前3个数字,例如下列三个数能被17整除且大于long.MAX_VALUE: 9223372036854775816
9223372036854775833
9223372036854775850

输入样例:

103

输出样例:

9223372036854775832
9223372036854775935
9223372036854776038

import java.util.*;
import java.lang.*;
import java.math.BigInteger;

public class test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		int tt = input.nextInt();

		// Long.MAX_VALUE 转换为 BigInteger
		BigInteger big = new BigInteger(String.valueOf(Long.MAX_VALUE));

		System.out.println("start......");

		int count = 3;
		while (count != 0) {
			/*
			 * BigInteger mod(BigInteger m) This method returns 
			 * a BigInteger whose value is
			 * (this mod m).
			 */
			// intValue() 将BigInteger 转为 int
			if (big.mod(BigInteger.valueOf(tt)).intValue() == 0) {
				count--;
				System.out.println(big);
			}
			/* BigInteger ONE: BigInteger的常量 1 */
			big = big.add(BigInteger.ONE); //相当于给 BigInteger+1
		}
		System.out.println("end.......");
	}
}

7. 两个巨大素数(质数)的乘积 (10 分)

得到两个巨大素数(质数)的乘积是简单的事,但想从该乘积分解出这两个巨大素数却是国际数学界公认的质因数分解难题。这种单向的数学关系,是不对称加密RSA算法的基本原理。 本题给出两个大素数(128bit位)的乘积和其中一个素数,请你编程求出另一个素数。

输入格式:

44022510695404470886511586569647292146578314354528108825807522926455663589709 (大素数的乘积)
189193782774204832019945226750213439577 (其中一个大素数)

输出格式:

232684764001698545563067004009755869717 (另一个素数)

输入样例:

60883665878129858935918958333091530420746054622405737630613777684610994823161
271963475875372143777333694041058521413

输出样例:

223867067745633357281812540202957589797

代码:

import java.util.*;
import java.lang.*;
import java.math.BigInteger;

public class test1 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		BigInteger a = input.nextBigInteger();
		BigInteger b = input.nextBigInteger();
		BigInteger c = a.divide(b);
		System.out.println(c);
	}
}

内容简介 《Java程序设计习题》是同作者所编写的清华大学教材《Java程序设计》相配套的习题。习题内容覆盖面广,包括:Java言的基本常识、基本语法、面向对象的基本概念、数组、字符串、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程规范、网络程序设计、多媒体民图形学程序设计以及数据库程序设计等。全书共分为习题、参考答案和测试要点与解题说明3个部分。习题包括判断正误、填空题、选择题、简答题、编程题和趣味题等6种题型,并按难易程序分为3 个等级,采用星号注明。本习题Java程序编写常见问题,并以习题形式总结和归纳Java程序设计知识要点,同时兼顾了SCJP(Sun公司 Java程序员认证考试),从而降低学习难度,减少编写程序出现错误的枘地,也便于掌握各个知识要点或测试对Java程序设计的掌握熟练程度。这些特点有利于初学者在学习过程中少走弯路。对知识点的总结以及内容的全面性也使得《Java程序设计习题》具有一定的手册特性,非常适合复习,同时也方便教师出题,使得各章节的试题容易在试卷中分布均匀合理。在本习题中的编程题和趣味题还有可能采用其他计算机语言实现,从而本习题也有可能成为学习其他计算机语言的实践素材。 编辑推荐 内容全面:习题全面覆盖了Java程序设计(J2SE)的基本知识要点和重要知识要点。以习题的形式对JaVa程序设计方法和常见问题进行了总结与归纳,从而方便复习。   实用性:《Java程序设计习题》每章都含有一些趣味题,营造了一种轻松而快乐的学习氛围,努力培养和提高学生的学习乐趣,同时也使学生容易产生学习成就感。   趣味性:习题基本上覆盖了程序员在编写Java程序时经常出现的问题Java程序设计知识要点,各习题也列出其测试要点,从而方便教师从中挑选或改编考题以及方便学生进行实战模拟练习或测试,同时也可以为SCJP考试作准备。   简洁性:每道习题者晖力求典型而简洁,这样既方便初学者,也有利于提高学习效率,在较短的时间内测试并领会较多的知识要点。 作者简介 雍俊海1991年到2000年就读于清华大学计算机科学与技术系,获学士。硕士和博士学位,被评为清华大学优秀博士毕业生,博士论文被评为全国优秀博士论文。从2000年3月到2000年6月在香港科技大学计算机系担任访问研究员,从2000年11月到2002年9月在美国肯塔基大学计算机系做博士后,现为清华大学软件学院教师。参与或负责多个国家自然科学基金项目。国家863项目。973项目和美国自然科学基金项目。在2003-2004学年度在清华大学开设了"Java程序设计"课程,获得学生一致好评。根据清华大学2003-2004学年秋季学期教学评估结果,教学成绩在全校名列前茅,在清华大学软件学院所有参评教师中取得教学成绩第一名,在所有讲授Jaya课程的清华大学参评教师中获得教学成绩第一名。因此还获得了清华大学软件学院教学工作优秀奖、大学生研究训练计划(SRT)优秀指导教师一等奖。 目录 第一部分习题 第1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串与异常处理 第5章 文件与数据流 第6章 图形用户界面设计 第7章 小应用程序 第8章 多线程程序设计 第9章 编程规范 第10章 网络程序设计11章 多媒体与图形学程序设计12章 数据库程序设计 第二部分 参考答案1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串与异常处理 第5章 文件与数据流 第6章 图形用户界面设计 第7章 小应用程序 第8章 多线程程序设计 第9章 编程规范 第10章 网络程序设计11章 多媒体与图形学程序设计12章 数据库程序设计 第三部分 测试要点与解题说明 第1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串与异常处理 第5章 文件与数据流 第6章 图形用户界面设计 第7章 小应用程序 第8章 多线程程序设计 第9章 编程规范 第10章 网络程序设计11章 多媒体与图形学程序设计12章 数据库程序设计 参考文献
1.下列特点中,哪个是Java 虚拟机执行的特点之一? A、字节代码 B、多进程 C、静态连接 D、编译 2Java语言的类型是 A、面向对象语言 B、面向过程语言 C、汇编程序 D、形式语言 3.下列哪个数代表单精度浮点数? A、0652 B、3.4457D C、0.298f D、0L 4.以下哪个表达式是不合法的 A、String x="Hello"; int y=9; x+=y; B、String x="Hello"; int y=9; if(x==y){} C、String x="Hello"; int y=9; x=x+y; D、String x=null; int y=(x!=null)&&(x.length()>0)? x.length():0; 5.main()方法的返回类型是: A、 int B、void C、boolean D、 static 6.下列对继承的说法,哪个是正确的? A、子类能继承父类的所有方法和状态 B、子类能继承父类的非私有方法和状态 C、子类只能继承父类public方法和状态 D、子类只能继承父类的方法,而不继承状态 7.下列关于构造方法的说法正确的是( )。 A、因为构造方法名与类名必须相同,构造方法在创建对象时被执行。 B、构造方法是给对象赋初值,所以没有返回值,必须用void来声明。 C、构造方法不能被程序调用,也不可以重载。 D、一个类只允许有一个构造方法。 8.若需要定义一个类域或类方法,应使用哪种修饰符? A、static B、package C、private D、public 9.如要抛出异常,应用下列哪种子句? A、catch B、throw C、try D、finally 10.对于catch 子句的排列,下列哪种是正确的? A、父类在先,子类在后 B、子类在先,父类在后 C、有继承关系的异常不能在同一个 try 程序段内 D、先有子类,其他如何排列都无关 11.计算机中的流是? A、流动的字节 B、流动的对象 C、流动的文件 D、流动的数据缓冲区 12.以下哪个是java.io包中的一个兼有输入输出功能的类。 A、Object B、Serializable C、RandomAccessFile D、java.io中不存在这样的类 13.下面关于线程优先级的说法中,错误的是: A、Java中的线程的优先级有三个静态常量 B、新建线程的优先级默认为最低 C、优先级高的线程优先被执行 D、一个线程运行时,有可能被比它高优先级的线程抢占运行 14.下列方法中建议使用的是: A、stop() B、supend() C、resume() D、wait() 15.如果希望所有的控件在界面上均匀排序,就使用下列哪种布局管理器? A、BosLayout B、GridLayout C、BorderLayout D、FlowLayout 16.在一个MVC用户界面中,存在三个通讯对象,其中_________是指定的逻辑表示法。 A、模型 B、视图 C、控件 D、结构 17.applet类的直接父类是: A、Component类 B、Container类 C、Frame类 D、Panel类 18.下面关于沙箱模型的叙述中错误的是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值