admin 管理员组

文章数量: 888267


2023年12月23日发(作者:dos系统基本命令)

java核心技术习题答案

The pony was revised in January 2021

Java核心技术

习题答案

马志强 张然 李雷孝 编

清华大学出版社

目 录

第一章Java语言概述 ................................................................................................................ 3

第二章 Java语法基础 ................................................................................................................ 4

第三章 面向对象编程 .............................................................................................................. 15

第四章 数组 ................................................................................................................................ 38

第五章 高级类特性 .................................................................................................................. 45

第六章 GUI编程 ....................................................................................................................... 51

第七章 集合框架 ....................................................................................................................... 62

第九章 集合框架 ....................................................................................................................... 77

第十章 IO流 .............................................................................................................................. 81

第十一章 JDBC访问数据库 .................................................................................................. 84

第十二章 线程 ........................................................................................................................... 85

第十三章 网络编程 .................................................................................................................. 90

第一章Java语言概述

一、选择题

1-5 ABBBB

6-8 AAB

二、填空题

1. MyClass

2. String数组(String[]) 一

3. javac java A

三、程序设计题

1、搭建Java运行环境,并写一个Java程序打印输出“开始学习Java程序设计!”。

1)首先安装JDK;

2)配置环境变量path,classpath可配可不配;

3)

public class HelloWorld{

public static void main(String[] args){

}

}

2、修改下面四个Java源文件中的错误,使其能够编译和运行。

开始学习Java程序设计!");

:TestAnother1类不能再使用public修饰,一个源文件中只能有一个类或者接口用public修饰;

:源文件中public修饰的类的名字为Testing2,和源文件名字不一致;

:Test3类的main方法的形参类型为String[];

:Test4类的main方法必须使用static关键字修饰。

第二章 Java语法基础

一、选择题

1-5 BCADB

6-9 DCCC

二、填空题

1. abc ,a1, _abc, _1a, ab123

#a,const,$abc,1abc,if,$#1sa,$_a,_$q1

2. 题目出现问题:代码修改为 ch = (char) (ch+1);结果为’B’;如果直接结果为98。

(真) false(假)

5. 2 2 false 2

*20/100 (double)m*20/100

三、编程题

1、由命令行输入一个成绩,使用switch结构求出成绩的等级。A:90-100;B:80-89;C:70-79;D:60-69;E:0-59。

public class IfElseTest {

public static void main(String[] args) {

Scanner sc = new Scanner;

int grade = ();

if(grade<0 || grade>100){

}

int temp =(int)(grade/10);

switch(temp){

case 10:{

}

case 9:{

}

case 8:{

}

case 7:{

}

case 6:{

break;

break;

break;

break;

break;

(0);

}

}

}

}

default:{

}

break;

2、计算圆周率:PI=4-4/3+4/ ...;打印出第一个大于小于的值。

public class PITest{

public static void main(String[] args){

double result=;

for(int i=1;;i++){

double m=(2*i-1);

if((i%2)==0){

}else{

}

if(result> && result<{

result+=m;

result-=m;

}

}

}

}

break;

3、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。斐波那契数列:1、1、2、3、5、8、13、21、34、……。

public class FibonacciTest{

public static void main(String[] args){

Scanner sn=new Scanner;

int num=();

int i=1;

int n1=1,n2=1;

while(i<=num){

if(i==1||i==2){

}else{

int temp=n2;

n2=n1+n2;

n1=temp;

n2=1;

}

}

}

}

i++;

第"+num+"个值为:"+n2);

4、计算多项式1-1/3+1/5-1/7+的值。

1)要求出前50项和值。

2)要求出最后一项绝对值小于1e-5的和值。

public class SumTest{

public static void main(String[] args){

double sum=;

for(int i=1;i<=50;i++){

}

if(i%2==0){

}else{

}

sum=sum+(2*i-1);

sum=(2*i-1);

}

}

前50项和值:"+sum);

double item=;

int j=1;

sum=;

while(item<{

}

最后一项绝对值小于1e-5的和值:"+sum);

item=(2*j-1);

if(j%2==0){

}else{

}

j++;

sum+=item;

sum-=item;

5、产生100个0-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是?

public class PrimeTest {

public static void main(String[] args) {

}

public boolean isPrime(int num){

for(int i=2;i<=num/2;i++){

}

return true;

if(num%i==0){

}

第一个被"+i+"整除!");

return false;

PrimeTest t = new PrimeTest();

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

}

int num = (int)()*1000);

if(num)){

}else{

}

不是素数!");

是素数!");

}

}

6、在屏幕上打印出n行的金字塔图案,如,若n=3,则图案如下:

*

***

*****

public class PrintStar{

public static void main(String[] args){

}

}

7、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。如输入10,结果为:10=5+5;10=3+7。

Scanner sn=new Scanner;

int rows=();

for(int i=1;i<=rows;i++){

}

for(int j=1;j<=rows-i;j++){

}

for(int k=1;k<=2*i-1;k++){

}

public class Gede {

public static void main(String[] args) {

int n = (args[0]);

if(n<=6 || n%2!=0){

}

Gede g = new Gede();

ava。

错误的参数!");

return;

public class CalenderModelA

{

ava。

public class TestCalenderModelA

{

public static void main(String[] args)

{

Scanner scan = new Scanner;

请输入年份:");

int year = ();

请输入月份:");

int month = ();

月历如下");

CalenderModelA testBegin = new CalenderModelA();

(year, month);

}

}

第三章 面向对象编程

一、选择题

1-5 CABDD

2-10 DCCBC

11-12 CC

二、填空题

e mypackage?;

e import class

5.c

三、程序设计题

2、按下列要求编写程序:

创建Teacher类

要求:Teacher类要描述姓名、年龄、薪水,类型分别为String、int、double

创建TeacherTest类

要求:在TeacherTest类中创建Teacher的对象;为该对象的属性(姓名、性别、年龄)赋值;将该对象的属性(姓名、性别、年龄)输出;

出。

public class Teacher {

public String name;

public int age;

public double salary;

public String getName() {

}

public void setName(String name) {

}

public int getAge() {

}

public void setAge(int age) {

return age;

= name;

return name;

为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000;

修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输

}

}

= age;

public double getSalary() {

}

public void setSalary(double salary) {

}

public Teacher(){

}

public Teacher(String name,int age,double salary){

}

public void addSalary(){

}

=+5000;

=name;

=age;

=salary;

= salary;

return salary;

public class TeacherTest {

}

3、定义一个Person类。

包含以下属性:String name; int age; boolean gender; Person partner。

定义marry(Person p)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信public static void main(String[] args) {

}

Teacher teacher=new Teacher();

=35;

="zhangsan";

=;

();

息,否则输出不能结婚原因。下列情况不能结婚:结婚年龄,男<24,女<22;3,某一方已婚。

③ 定义测试类,来测试以上程序。

public class Person{

private String name;

private int age;

private boolean gender;

Person partner;

public Person(String name,int age,boolean gender,Person partner){

}

public void marry(Person p){

if=={

}

if(==true && <24)||==false && <22)

}

if!=null || !=null){

有一方已经结婚!");

|| ==true && <24) || ==false && <22)){

没有达到结婚年龄!");

return;

同性不能结婚!");

return;

=name;

=age;

=gender;

=partner;

}

}

}

return;

祝你们新婚愉快!");

=p;

=this;

public static void main(String[] args){

}

Person p1=new Person("关之琳",23,false,null);

Person p2=new Person("刘德华",26,true,null);

Person p3=new Person("孙楠",70,true,null);

(p2);

(p3);

4、定义一个Animal类,该类有两个私有属性,name(代表动物的名字)和legs(代表动物的腿的条数)。

① 两个构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。

② 两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX

Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX

Moving!!

public class Animal1 {

private String name;

private int legs;

public Animal1(){

}

public Animal1(String name,int legs){

}

super();

=name;

=legs;

="AAA";

=4;

public String getName() {

}

public void setName(String name) {

}

public int getLegs() {

= name;

return name;

}

}

return legs;

public void setLegs(int legs) {

}

public void move(){

}

public void move(int n){

}

int i=1;

while(i<=n){

}

i++;

= legs;

5、定义一个Fish类,继承自Animal类。

提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;

覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!!

public class Fish extends Animal {

private String name;

}

private int legs;

public Fish(String name){

}

public void move(){

}

=name;

=0;

public class Bird extends Animal {

}

6、写一个类Zoo,要求分别生成若干个Animal、Fish和Bird。并调用他们的属性和方法。

private String name;

private int legs;

public Bird(String name){

}

public void move(){

}

=name;

=2;

public class Zoo {

}

7、某公司的雇员分为以下若干类:

① Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:public static void main(String[] args) {

}

Animal a=new Animal("dog",4);

();

(3);

Fish f=new Fish("small fish");

();

Bird b=new Bird("xique");

();

Animal af=new Fish("small fish");

();

getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪;

HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照倍工资发放。属性:每小时的工资、每月工作的小时数;

④ SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。

⑤ BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。

写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。

class Employee{

private String name;

private int month;

public Employee(String name,int month){

}

public String getName(){

}

public double getSalary(int month){

if==month){

}

return ;

return ;

return name;

=name;

=month;

}

}

class SalariedEmployee extends Employee{

}

class HourlyEmployee extends Employee{

private int hours;

private double hourSalary;

public HourlyEmployee(String name,int month,int hours,double hourSalary){

super(name,month);

=hours;

=hourSalary;

private double monthSalary;

public SalariedEmployee(String name,int month,double monthSalary){

}

public double getSalary(int month){

}

return monthSalary+(month);

super(name,month);

=monthSalary;

}

}

public double getSalary(int month){

}

double result;

if(hours<=160){

}else{

}

return result+(month);

result=160*hourSalary+(hours-160)**hourSalary;

result=hours*hourSalary;

class SalesEmployee extends Employee{

private double salesCount;

private double rate;

public SalesEmployee(String name,int month,double salesCount,double rate){

}

super(name,month);

=salesCount;

=rate;

public double getSalary(int month){

return salesCount*rate+(month);

}

}

class BasedPlusSalesEmployee extends SalesEmployee {

private double basedPlus;

public BasedPlusSalesEmployee(String name,int

rate,double basedPlus){

super(name,month,salesCount,rate);

=basedPlus;

}

public double getSalary(int month){

return basedPlus+(month);

}

}

public class EmployeeTest{

public static void main(String[] args){

Employee[] e=new Employee[4];

e[0]=new SalariedEmployee("zhangsan",9,;

e[1]=new HourlyEmployee("lisi",5,230,;

month,double salesCount,double

}

e[2]=new SalesEmployee("wangwu",11,,;

}

e[3]=new BasedPlusSalesEmployee("zhaoliu",2,,,;

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

}

月份的工资总额为:"+e[i].getSalary(9));

四、实训题

班级成绩管理系统实体类设计。

public class Test {

public static void main(String[] args){

("信息工程学院");

("软件工程");

("软件10-1");

Grade stugrade =new Grade();

("Web程序设计");

("2011-2012(下)");

;

().addGrade(stugrade);

}

}

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

stugrade =new Grade();ddGrade(stugrade);

("2011-2012(下)");

().sortByxq();

public class Student{

private String sid;

private String sname;

private String xueyuan;oString();

}

public Student(String sid){

autoId();

grades = new GradeArray();

}

this(sid,null);

public Student(String sid,String sname){

}

public Student(String sid,String sname,String xueyuan){

}

public String getSid() {

}

public void setSid(String sid) {

}

public String getSname() {

return sname;

= sid;

return sid;

= sid;

= sname;

=xueyuan;

grades = new GradeArray();

this(sid,sname,null);

}

public void setSname(String sname) {

}

public String getXueyuan() {

}

public void setXueyuan(String xueyuan) {

}

public String getZhuanye() {

}

public void setZhuanye(String zhuanye) {

}

public String getBanji() {

}

return banji;

= zhuanye;

return zhuanye;

= xueyuan;

return xueyuan;

= sname;

public void setBanji(String banji) {

}

public GradeArray getGrades() {

}

public void setGrades(GradeArray grades) {

}

public ZcGrade getZcGrade() {

}

public void setZcGrade(ZcGrade zcGrade) {

}

public void computeZc(String xqid){

zcGrade = new ZcGrade(xqid);

float sum = 0;

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

= zcGrade;

return zcGrade;

= grades;

return grades;

= banji;

}

}

(sum);

if()[i].getXq())){

}

sum += ()[i].getCj();

@Override

public boolean equals(Object obj) {

}

etXq()pareToIgnoreCase(grades[j+1].getXq())>0){

Grade temp = grades[j+1];

grades[j+1] = grades[j];

grades[j] = temp;

quals(g)){

}

}

result = true;

break;

return result;

}

}

}

}

}

public class GradeListStack {

/**

* @param args

*/

private Stack gradelist;

GradeListStack(){

}

public void push(Grade grade){

}

public Grade pop(){

}

return ();

(grade);

gradelist = new Stack();

public boolean isEmpty(){

}

public Stack getGradelist() {

}

public void setGradelist(Stack gradelist) {

}

@Override

public String toString() {

s=180

= gradelist;

return gradelist;

return ();

[i]

arr[j]=arr[i]

arr[i]=temp

三、程序设计题

(1)写一个类在其中定义一些方法实现数组元素的遍历、排序、插入、删除、查找。

public class ArrayTest{

public static void main(String[] args){

int[] a={11,2,-3,54,115,36};

int[] b={110,-9,78,27,6,225,94,32,-12,1111,0};

, "+", "=" };

/** 计算器上的功能键的显示名字 */

private final String[] COMMAND = { "Backspace", "CE", "C" };

/** 计算器左边的M的显示名字 */

private final String[] M = { " ", "MC", "MR", "MS", "M+" };

/** 计算器上键的按钮 */

private JButton keys[] = new JButton[];

/** 计算器上的功能键的按钮 */

private JButton commands[] = new JButton[];

/** 计算器左边的M的按钮 */

private JButton m[] = new JButton[];

/** 计算结果文本框 */

private JTextField resultText = new JTextField("0");

etForeground;

}

etForeground;

keys[8].setForeground;

keys[13].setForeground;

keys[18].setForeground;

keys[19].setForeground;

etForeground;

}

etForeground;

}

etLayout(new BorderLayout(3, 5));

getContentPane().add("North", top);

getContentPane().add("Center", panel1);

getContentPane().add("West", calmsPanel);

ddActionListener(this);

}

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

commands[i].addActionListener(this);

}

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

m[i].addActionListener(this);

}

}

/**

* 处理事件

*/

public void actionPerformed(ActionEvent e) {

ndexOf(label) >= 0) {

) && ().indexOf(".") < 0)) {

;

} else if (!(".")) {

oubleValue();

} catch (NumberFormatException e) {

}

return result;

}

public static void main(String args[]) {

Calculator calculator1 = new Calculator();

(true);

;

}

}

第七章 集合框架

一、选择题

1-2 BC

二、填空题

一、元素个数

二、无序可重复 有 可以 无 不可以 key-value映射 value key

三、覆盖 添加 1 key 获得key对应的value keySet set values Collection entrySet

三、 程序设计题

①写MyStack类,实现栈功能,要求在类中使用ArrayList保存数据。写MyStackTest类对栈功能进行测试。

import .*;

public class MyStack

{

private ArrayList data;

public MyStack(){

data = new ArrayList();

}

}

public void push(Object o){

}

public Object pop(){

}

public int getSize(){

}

return ();

int size = ();

if(size>0)

else

return null;

return ()-1);

(o);

public class MyStackTest

{

public static void main(String[] args)

{

}

}

MyStack stack = new MyStack();

(new Integer(1));

(new Integer(2));

(new Integer(3));

(new Integer(4));

(new Integer(5));

②写MyQueue类,实现队列功能,要求在类中使用ArrayList保存数据。写MyQueueTest类对队列功能进行测试。

import .*;

public class MyQueue

{

private ArrayList data;

public MyQueue(){

}

public void in(Object o){

}

(o);

data = new ArrayList();

}

public Object out(){

}

public int getSize(){

}

return ();

int size = ();

if(size>0)

else

return null;

return (0);

public class MyQueuTest

{

public static void main(String[] args)

{

MyQueue queue = new MyQueue();

(new Integer(1));

(new Integer(2));

(new Integer(3));

}

}

(new Integer(4));

(new Integer(5));

③使用TreeSet和Comparator,编写TreeSetTestInner类,要求对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列,并使用匿名内部类和静态内部类分别实现。

import .*;

public class TreeSetTestInner{

public static void main(String[] args) {

}

TreeSet c = new TreeSet(new MyComparator());

("HashSet");

("ArrayList");

("TreeMap");

("HashMap");

("TreeSet");

("LinkedList");

Iterator it = ();

while())

static class MyComparator implements Comparator{

public int compare(Object o1, Object o2){

String s1 = (String)o1;

String s2 = (String)o2;

;

public class TreeSetTestInner2{

public static void main(String[] args) {

TreeSet c = new TreeSet(new Comparator(){

public int compare(Object o1, Object o2){

String s1 = (String)o1;

String s2 = (String)o2;

;

public class TreeSetTest{

public static void main(String[] args) {

TreeSet c = new TreeSet(new MyComparator());

("HashSet");

("ArrayList");

("TreeMap");

("HashMap");

}

}

("TreeSet");

("LinkedList");

Iterator it = ();

while())

TreeSet cc = new TreeSet(new MyComparator2());

for(int i=1; i<=10; i++)

it = ();

while())

(new Integer(i));

class MyComparator implements Comparator{

public int compare(Object o1, Object o2){

String s1 = (String)o1;

String s2 = (String)o2;

ntValue();

int num2 = ((Integer)o2).intValue();

int type1 = num1%2;

int type2 = num2%2;

}

if(type1>type2)

return -1;

else if(type1

else{

}

return 0;

if(type1==0){

if(num1>num2)

return -1;

return 1;

else if(num1

return 1;

}else if(type1==1){

}

if(num1>num2)

return 1;

else if(num1

return -1;


本文标签: 属性 工资 员工