《Java语言程序设计基础教程》练习思考题参考答案第1章Java程序设计概述1.1单项选择题1.编译JavaApplication源文件将产生相应的字节码文件,扩展名是什么A..javaB..classC..htmlD..exe解答:B2.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中“一次编译,随处运行”的特点。A.简单性B.平台无关性C.面向对象性D.安全性解答:B3.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中并行机制的特点。A.多线程B.平台无关性C.面向对象性D.安全性解答:A4.在Java语言中,下列哪些语句关于内存回收的说明是正确的?A.程序员必须创建一个线程来释放内存;B.内存回收程序负责释放无用内存;C.内存回收程序允许程序员直接释放内存;D.内存回收程序可以在指定的时间释放内存对象解答:B5.一个Java源文件中最多只能有多少个public类。A.1个B.2个C.3个D.任意多个解答:A6.下面哪一个不是Java语言所具有的特点。A.没有全局变量,在类的定义外部没有任何的变量定义;B.不直接支持指针操作,而使用更安全的引用类型;C.支持子类对父类的多继承;D.具有自动垃圾收集功能;解答:C7.下面哪一个不是Java开发工具包JDK的组成部分。A.Java的编译器;B.Java的解释器;C.Java的API继承类库;D.Eclipse开发工具;解答:C8.JDK提供的编译器是()。A.java.exeB.javac.exeC.javap.exeD.javaw.exe解答:B9.作为Java应用程序入口的main方法,其声明格式可以是()A.publicvoidmain(String[]args)B.publicstaticvoidmain(String[]args)C.publicstaticvoidMain(String*args)D.publicintmain(String[]args)解答:B10.下列说法正确的是(A)A、JAVA程序的main方法必须写在类里面B、JAVA程序中可以有多个main方法C、JAVA程序中类名必须与文件名一样D、JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来11.下列哪些语句关于Java内存回收的说明是正确的?(B)A、程序员必须创建一个线程来释放内存B、内存回收程序负责释放无用内存C、内存回收程序允许程序员直接释放内存D、内存回收程序可以在指定的时间释放内存对象1.2填空题1、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。解答:编辑源程序、编译生成字节码和解释运行字节码2、使用Java编译器___javac____.exe编译源文件得到字节码文件。3、Java应用程序必须通过Java解释器__JAVA__.exe来解释执行其字节码文件。4、如果Java源文件中有一个类是public类,那么源文件的名字必须与这个类的名字完全_相同______,扩展名是.java。5、Java应用程序总是从主类的____main___方法开始执行.1.3简答题13.简述Java程序的开发过程?(1)使用一个文字编辑器,编写源文件。(2)使用java编译器,编译源文件得到字节码文件。(3)解释运行字节码,分两种java应用程序必须通过java解释器来解释执行,java小应用程序必须使用解释器和浏览器运行程序。1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?解答:Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。3.Java语言的关键特点有哪些?解答:简单性平台无关性面向对象性安全性分布式多线程动态性1.4综合题第2章Java基本的程序设计结构2.1单项选择题1、下面哪一项在java中是非法的标识符?()A.$userB.pointC.You&meD._endline解答:C2、若有定义inta=9,b=6;那么ab的值是:()A.0B.1C.falseD.true解答:D3、执行完以下代码int[]x=newint[25];后,以下说明正确的是:()A.x[24]为0B.x[24]未定义C.x[25]为0D.x[0]为空解答:A4、Java应用程序的main方法中有以下语句,则输出的结果是()。int[]x={2,3,-8,7,9};intmax=x[0];for(inti=1;ix.length;i++){if(x[i]max)max=x[i];}System.out.println(max);A.2B.-8C.7D.9解答:D5、设x=1,y=2,z=3,则表达式y+=z--/++x的值是()A.3B.3.5C.4D.5解答:A5、执行System.out.println(5/4),这条代码的输出结果是()A.1B.1.25C.1.5D.0解答:A6、下列语句有错误的是:()A.int[]a;B.int[]b=newint[10];C.intc[]=newint[];D.intd[]=null;解答:C7、下列语句有错误的是:()A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];解答:D8、下列哪一个不属于Java中的8种基本数据类型()A.double;B.char;C.int;D.String;解答:D9、以下数据类型存储空间最大的是()。(A)byte(B)long(C)float(D)char解答:B10、System.out.println(5+2);的输出结果应该是()。A52B7C2D5答案:A11.在类的定义中可以有两个同名方法,每个方法的参数不同,这种现象称为方法(D)。(A)封装(B)继承(C)覆盖(D)重载12.java中定义字符串Strings=”pzhu”,下面操作可以取得字符串长度的是()。A.s.length()B.s.lengthC.s.size()D.length(s)解答:A13.指出下列程序运行的结果(B)(很难)publicclassExample{Stringstr=newString(good);char[]ch={'a','b','c'};publicstaticvoidmain(Stringargs[]){Exampleex=newExample();ex.change(ex.str,ex.ch);System.out.print(ex.str+and);System.out.print(ex.ch);}publicvoidchange(Stringstr,charch[]){str=testok;ch[0]='g';}}A、goodandabcB、goodandgbcC、testokandabcD、testokandgbc14.下面代码的运行结果为:(C)(较难)importjava.io.*;importjava.util.*;publicclassfoo{publicstaticvoidmain(String[]args){Strings;System.out.println(s=+s);}}A代码得到编译,并输出“s=”B代码得到编译,并输出“s=null”C由于Strings没有初始化,代码不能编译通过D代码得到编译,但捕获到NullPointException异常15.关于以下程序段,正确的说法是(C)1.Strings1=”abc”+”def”;2.Strings2=newString(s1);3.if(s1==s2)4.System.out.println(“==succeeded”);5.if(s1.equals(s2))6.System.out.println(“.equals()succeeded”);A、行4与行6都将执行B、行4执行,行6不执行C、行6执行,行4不执行D、行4、行6都不执行16.Javaapplication中的主类需包含main方法,main方法的返回类型是什么?(D)A、intB、floatC、doubleD、void17.为一个boolean类型变量赋值时,可以使用(B)方式A、boolean=1;B、booleana=(9=10);C、booleana=真;D、booleana==false;18.表达式(11+3*8)/4%3的值是(D)A、31B、0C、1D、219.运算符优先级别排序正确的是(A)(太难)A、由高向低分别是:()、!、算术运算符、关系运算符、逻辑运算符、赋值运算符;B、由高向低分别是:()、关系运算符、算术运算符、赋值运算符、!、逻辑运算符;C、由高向低分别是:()、算术运算符、逻辑运算符、关系运算符、!、赋值运算符;D、由高向低分别是:()、!、关系运算符、赋值运算符、算术运算符、逻辑运算符;20.下列值不为true的表达式有(C)。A、john==johnB、john.equals(john)C、john=johnD、john.equals(newString(john))21、下面的方法,当输入为2的时候返回值是多少?(D)(很难)publicstaticintgetValue(inti){intresult=0;switch(i){case1:result=result+i;case2:result=result+i*2;case3:result=result+i*3;}returnresult;}A0B2C4D10答案:D解析:注意这里case后面没有加break,所以从case2开始一直往下运行。22、下面有关for循环的描述正确的是(A)A、for循环体语句中,可以包含多条语句,但要用大括号括起来B、for循环只能用于循环次数已经确定的情况C、在for循环中,不能使用break语句跳出循环D、for循环是先执行循环体语句,后进行条件判断23、score是一个整数数组,有五个元素,已经正确初始化并赋值,仔细阅读下面代码,程序运行结果是(B)temp=score[0];for(intindex=1;index5;index++){if(score[index]temp){temp=score[index];}}A.求最大数B.求最小数C.找到数组最后一个元素D.编译出错26、2.2填空题1、Java语言是一种完全的_面向对象_程序设计语言2、Strings1=“China”;intn=s1.length();n的值为_5__3、在Java语言中,基本数据类型包括:____整数类型、____浮点类型、____字符类型_和____布尔类型17、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用__2___字节内存空间,这样,无论是中文字符还是英文字符,都是占用__2___字节内存空间。18、设x=2,则表达式(x++)/3的值是__0___。20、设有数组定义:intMyIntArray[]={10,20,30,40,50,60,70};则执行以下几个语句后的输出结果是:120。intMyIntArray[]={10,20,30,40,50,60,70};ints=0;for(inti=0;iMyIntArray.length;i++)if(i%2==1)s+=MyIntArray[i];System.out.println(s);21、数组对象的长度在数组对象创建之后,就__不会____改变。数组元素的下标总是从___0___开始。22、对于数组int[]