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
GradeListStack(){
}
public void push(Grade grade){
}
public Grade pop(){
}
return ();
(grade);
gradelist = new Stack
public boolean isEmpty(){
}
public Stack
}
public void setGradelist(Stack
}
@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 三、 程序设计题 ①写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;
版权声明:本文标题:java核心技术习题答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703326712h447035.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论