《Java基础入门》课后习题答案.docx

上传人:b****2 文档编号:23008768 上传时间:2023-04-30 格式:DOCX 页数:26 大小:24.72KB
下载 相关 举报
《Java基础入门》课后习题答案.docx_第1页
第1页 / 共26页
《Java基础入门》课后习题答案.docx_第2页
第2页 / 共26页
《Java基础入门》课后习题答案.docx_第3页
第3页 / 共26页
《Java基础入门》课后习题答案.docx_第4页
第4页 / 共26页
《Java基础入门》课后习题答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

《Java基础入门》课后习题答案.docx

《《Java基础入门》课后习题答案.docx》由会员分享,可在线阅读,更多相关《《Java基础入门》课后习题答案.docx(26页珍藏版)》请在冰豆网上搜索。

《Java基础入门》课后习题答案.docx

《Java基础入门》课后习题答案

《Java基础入门》课后习题答案

第1章Java开发入门

一、填空题

1、JavaEE、JavaSE、JavaME

2、JRE

3、javac

4、bin

5、path、classpath

二、选择题

1、ABCD2、C3、D4、B5、B

三、简答题

1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、JRE(JavaRuntimeEnvironment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。

JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。

JDK(JavaDevelopmentKit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。

初学者学习和使用Java语言时,首先必须下载和安装JDK。

JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。

四、编程题

publicclassHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println("这是第一个Java程序!

");

}

}

第2章Java编程基础

一、填空题

1、class

2、true和false

3、单行注释、多行注释、文档注释

4、基本数据类型、引用数据类型

5、1、2、4、8

6、&&&|||

7、0

8、5

9、34

10、56

二、判断题

1、错2、对3、错4、对5、错

三、选择题

1、AD2、AD3、C4、ABCD5、C6、A7、AC8、A9、B10、A

四、程序分析题

1、编译不通过。

int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过。

2、编译不通过。

这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y=x;语句时已经超过了y变量的作用域,所以编译无法通过。

3、打印结果为:

3。

4、打印结果为:

9

8

7

五、简答题

1、Java语言的八种基本数据类型有:

byte字节型,占一个字节。

short短整型,占两个字节。

int整型,占4个字节。

long长整型,占8个字节。

float单精度浮点型,占4个字节。

double双精度浮点型,占8个字节。

char字符型,占两个字节。

boolean型,表示逻辑值,有true和false两个值,分别占一个字节。

2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。

如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。

例如定义intx=2,y=0;booleanb=x0表达是会发生被0除异常,因为x/y的表达式执行了。

而booleanb=x0是不会出现这种异常的,因为x

3、方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。

调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。

六、编程题

1、参考答案

publicclassTest01{

publicstaticvoidmain(String[]args){

intsum=0;

for(inti=1;i<100;i++){

if(i%2!

=0)

sum+=i;

}

System.out.println(sum);

}

}

2、参考答案

publicclassTest02{

publicstaticvoidmain(Stringargs[]){

inty=function(0);

System.out.println(y);

}

publicstaticintfunction(intx){

inty;

if(x>0){

y=x+3;

}elseif(x==0){

y=0;

}else{

y=x*x-1;

}

returny;

}

}

3、参考答案

publicclassTest03{

publicstaticvoidmain(String[]args){

int[]arr={25,24,12,76,101,96,28};

for(inti=0;i

//定义内层循环

for(intj=0;j

if(arr[j]>arr[j+1]){//比较相邻元素

//下面的三行代码用于交换两个元素

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

for(inti=0;i

System.out.print(arr[i]+"");//打印元素和空格

}

}

}

第3章面向对象(上)

一、填空题

1、封装、继承、多态

2、new

3、成员变量、局部变量

4、类、类

5、this

6、finalize()

7、静态变量

8、内部类

9、javadoc

10、private

二、判断题

1、对2、对3、错4、对5、错

三、选择题

1、B2、D3、B4、ABC5、ABCD6、ACD7、ABCD8、ABCD9、D10、D

四、程序分析题

1、程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问。

2、程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。

3、程序能够编译通过,运行的结果为“inner”。

五、简答题

1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。

而普通方法只有在使用的时候才会被调用。

在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值

2、单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。

六、编程题

1、参考答案

classStudent{

privateStringname;

privatedoublegrade;

publicStudent(){

}

publicStudent(Stringname,doublegrade){

this.name=name;

this.grade=grade;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicdoublegetGrade(){

returngrade;

}

publicvoidsetGrade(doublegrade){

this.grade=grade;

}

}

publicclassTest01{

publicstaticvoidmain(String[]args){

Studentstu1=newStudent();

stu1.setName("zhangsan");

stu1.setGrade(99);

Studentstu2=newStudent("lisi",100);

}

}

2、参考答案

classFather{

privateStringname="zhangjun";

classChild{

publicvoidintroFather(){

System.out.println("MyFather'snameis"+name);

}

}

}

publicclassTest02{

publicstaticvoidmain(String[]args){

Father.Childchild=newFather().newChild();

child.introFather();

}

}

第4章面向对象(下)

一、填空题

1、继承

2、方法,抽象类

3、import

4、子类、父类、基类

5、Exception

6、final

7、super

8、Object

9、try、catch

10、jar–cvf,java–jar

二、判断题

1、错2、对3、错4、对5、对

三、选择题

1、B2、C3、ABC4、ABCD5、C6、AC7、C8、D9、A10、B

四、程序分析题

1、程序编译能通过,这是因为intx=2/0;System.out.println(x);这两条语句使用了try块,捕获了程序因为除以0而产生的异常情况,之后程序会继续向下执行,输出“进入catch代码块”,“进入finally代码块”。

2、程序编译不通过,这是因为在程序中使用了final关键字修饰Animal类,使得Animal类不能被继承。

shout()方法中同样使用了final关键字,使得该方法不能被重写。

3、程序编译能通过,输出结果为“动物叫!

”和“汪汪……”,因为在程序中调用shout()方法时,首先会通过super.shout()调用父类的方法说出“动物叫!

”之后再输出“汪汪……”

4、程序编译不通过,因为接口中定义的方法不能有方法体,所以定义的eat()方法是错误的。

接口中的方法必须在子类中全部实现,由于run()方法在子类中并没有重新实现,所以这也是错误的。

五、简答题

1、在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。

2、多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。

简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。

3、在Java中,使用abstract关键字修饰的类称之为抽象类。

抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。

抽象类通常用于表示一种抽象的概念。

接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。

由于接口的特殊性,在定义时需要使用interface关键字。

六、编程题

1、参考答案

classStudent{

publicStringname;

publicintage;

publicStudent(Stringname,intage){

this.name=name;

this.age=age;

}

publicvoidshow(){

System.out.println("name:

"+name+"age:

"+age);

}

}

classUnderGraduateextendsStudent{

publicStringdegree;

publicUnderGraduate(Stringname,intage,Stringdegree){

super(name,age);

this.degree=degree;

}

publicvoidshow(){

System.out.println("name:

"+name+"age:

"+age+"degree:

"+degree);

}

}

publicclassTest01{

publicstaticvoidmain(String[]args){

Studentstudent=newStudent("zhangsan",16);

student.show();

UnderGraduateunderGraduate=newUnderGraduate("lisi",20,"bechalor");

underGraduate.show();

}

}

2、参考答案

interfaceShape{

doublearea(doublegivenValue);

}

classSquareimplementsShape{

publicdoublearea(doublesideLength){

returnsideLength*sideLength;

}

}

classCircleimplementsShape{

publicdoublearea(doubler){

returnMath.PI*r*r;

}

}

publicclassTest02{

publicstaticvoidmain(String[]args){

Shapesquare=newSquare();

Shapecircle=newCircle();

System.out.println(square.area

(2));

System.out.println(circle.area(3));

}

}

3、参考答案

classNoThisSongExceptionextendsException{

publicNoThisSongException(){

super();

}

publicNoThisSongException(Stringmessage){

super(message);

}

}

classPlayer{

publicvoidplay(intindex)throwsNoThisSongException{

if(index>10){

thrownewNoThisSongException("您播放的歌曲不存在");

}

System.out.println("正在播放歌曲");

}

}

publicclassTest03{

publicstaticvoidmain(String[]args){

Playerplayer=newPlayer();

try{

player.play(13);

}catch(NoThisSongExceptione){

System.out.println("异常信息为:

"+e.getMessage());

}

}

}

第5章多线程

一、填空题

1、线程、通信

2、Thread、Runnable

3、就绪

4、synchronized、对象、this

5、进程

6、新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Terminated)

7、10、1

8、开启一个新线程、run()方法

9、wait()、notify()、notifyAll()

10、setDaemon(true)、start()

二、判断题

1、错2、对3、对4、错5、错

三、选择题

1、B2、AC3、ABC4、BC5、ABD6、ABC7、C8、D9、AB10、ABCD

四、程序分析题

1、程序不能编译通过,因为RunHandler类没有实现Runnable接口,因此RunHandler的实例对象不能作为参数传递给Thread的构造方法。

2、程序不能编译通过,因为Thread的子类A重写的run()方法的访问级别不能低于父类run()方法的。

访问级别

3、程序不能编译通过,因为同步方法中调用wait()方法的对象必须为同步锁对象。

4、t.start();

五、简答题

1、一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。

newThread(){

publicvoidrun(){}

}.start();

另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。

newThread(newRunnable(){

publicvoidrun(){}

}).start()

2、调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。

wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。

当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。

六、编程题

1、参考答案

publicclassMyThreadextendsThread{

publicMyThread(Stringname){

super(name);

}

publicvoidrun(){

System.out.println(this.getName());

}

publicstaticvoidmain(String[]args){

newMyThread("Thread1").start();

newMyThread("Thread2").start();

}

}

2、参考答案

publicclassMyRunnableimplementsRunnable{

publicvoidrun(){

for(inti=0;i<50;i++){

System.out.println("new");

}

}

publicstaticvoidmain(String[]args){

newThread(newMyRunnable()).start();

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

System.out.println("main");

}

}

}

3、参考答案

publicclassTest01{

publicstaticvoidmain(String[]args){

Teachert=newTeacher();

newThread(t,"陈老师").start();

newThread(t,"高老师").start();

newThread(t,"李老师").start();

}

}

classTeacherimplementsRunnable{

privateintnotes=80;

publicvoidrun(){

while(true){

dispatchNotes();//调用售票方法

if(notes<=0){

break;

}

}

}

privatesynchronizedvoiddispatchNotes(){

if(notes>0){

try{

Thread.sleep(10);//经过的线程休眠10毫秒

}catch(InterruptedExceptione){

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+"---发出的笔记"

+notes--);

}

}

}

4、参考答案

publicclassAccumulatorextendsThread{

privateintstratNum;

publicstaticintsum;

publicAccumulator(intstartNum){

this.stratNum=startNum;

}

publicstaticsynchronizedvoidadd(intnum){

sum+=num;

}

publicvoidrun(){

intsum=0;

for(inti=0;i<10;i++){

sum+=stratNum+i;

}

add(sum);

}

publicstaticvoidmain(String[]args)throwsException{

Thread[]threadList=newThread[10];

for(inti=0;i<10;i++){

threadList[i]=newAccumulator(10*i+1);

threadList[i].start();

}

for(inti=0;i<10;i++){

threadList[i].join();

}

System.out.println("Sumis:

"+sum);

}

}

第6章JavaAPI

一、填空题

1、String、StringBuffer

2、Date、Calendar、DateFormat

3、getRuntime()

4、sqrt()

5、DateFormat

6、π、e

7、Random、java.util

8、length()

9、静态

10、edcba

二、判断题

1、错2、错3、对4、错5、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1