《Java基础入门》课后题答案Word格式文档下载.docx
《《Java基础入门》课后题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《Java基础入门》课后题答案Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
&
|||
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=x<
y&
x/2>
0表达是会发生被0除异常,因为x/y的表达式执行了。
而booleanb=x<
0是不会出现这种异常的,因为x<
y为false,表达式x/y不会执行。
3、方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。
调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
六、编程题
1、参考答案
publicclassTest01{
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{
int[]arr={25,24,12,76,101,96,28};
for(inti=0;
arr.length-1;
//定义内层循环
for(intj=0;
j<
arr.length-i-1;
j++){
if(arr[j]>
arr[j+1]){//比较相邻元素
//下面的三行代码用于交换两个元素
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
arr.length;
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、单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。
classStudent{
privateStringname;
privatedoublegrade;
publicStudent(){
publicStudent(Stringname,doublegrade){
this.name=name;
this.grade=grade;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
publicdoublegetGrade(){
returngrade;
publicvoidsetGrade(doublegrade){
Studentstu1=newStudent();
stu1.setName("
zhangsan"
stu1.setGrade(99);
Studentstu2=newStudent("
lisi"
100);
classFather{
privateStringname="
zhangjun"
;
classChild{
publicvoidintroFather(){
System.out.println("
MyFather'
snameis"
+name);
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关键字。
publicStringname;
publicintage;
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
publicvoidshow(){
name:
+name+"
age:
+age);
classUnderGraduateextendsStudent{
publicStringdegree;
publicUnderGraduate(Stringname,intage,Stringdegree){
super(name,age);
this.degree=degree;
+age+"
degree:
+degree);
publicclassTest01{
Studentstudent=newStudent("
16);
student.show();
UnderGraduateunderGraduate=newUnderGraduate("
20,"
bechalor"
underGraduate.show();
interfaceShape{
doublearea(doublegivenValue);
classSquareimplementsShape{
publicdoublearea(doublesideLength){
returnsideLength*sideLength;
}
classCircleimplementsShape{
publicdoublearea(doubler){
returnMath.PI*r*r;
Shapesquare=newSquare();
Shapecircle=newCircle();
System.out.println(square.area
(2));
System.out.println(circle.area(3));
classNoThisSongExceptionextendsException{
publicNoThisSongException(){
super();
publicNoThisSongException(Stringmessage){
super(message);
classPlayer{
publicvoidplay(intindex)throwsNoThisSongException{
if(index>
10){
thrownewNoThisSongException("
您播放的歌曲不存在"
正在播放歌曲"
Playerplayer=newPlayer();
try{
player.play(13);
}catch(NoThisSongExceptione){
异常信息为:
+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(){
}).start()
2、调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。
wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。
当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。
publicclassMyThreadextendsThread{
publicMyThread(Stringname){
super(name);
publicvoidrun(){
System.out.println(this.getName());
newMyThread("
Thread1"
).start();
Thread2"
publicclassMyRunnableimplementsRunnable{
50;
new"
newThread(newMyRunnable()).start();
main"
Teachert=newTeacher();
newThread(t,"
陈老师"
高老师"
李老师"
classTeacherimplementsRunnable{
privateintnotes=80;
while(true){
dispatchNotes();
//调用售票方法
if(notes<
=0){
break;
privatesynchronizedvoiddispatchNotes(){
if(notes>
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;
10;
sum+=stratNum+i;
add(sum);
publicstaticvoidmain(String[]args)throwsException{
Thread[]threadList=newThread[10];
threadList[i]=newAccumulator(10*i+1);
threadList[i].start();
threadList[i].join();
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、静态