JAVA各章习题及答案 下载本文

byte、 int 、 short 和long。

3. boolean 类型数据不可以做类型转换。

4.在Java语言的基本数据类型中,占存储空间最少的类型是 boolean ,该类型占用的存储空间为 1 位。

5.Java语言中的 保留字 具有特殊意义和作用,不能作为普通标识符使用。 6.在Java语言中,浮点类型数据属于实型数据,可以分为 单精度 和 双精度 两种。 7.char类型的数据可以表示的字符数共为 65536 。 8.定义初始值为10的8次方的常整型变量iLong的语句是 final iLong = 100000000L 。 9.Java语言中的数据类型转换包括 自动转换 和 强制转换 两种。 10.Java中的字符采用的是16位的 Unicode 编码。

11.数据类型中存储空间均为64位的两种数据类型是 long 和 double 。 12.表达式9*4/ -5%5的值为 -2 。(十进制表示) 13.表达式5&2的值为 0 。(十进制表示) 14.表达式42<<4的值为 672 。(十进制表示) 15.表达式11010011>>>3的值为 11010 。(二进制表示) 16.表达式7|3的值为 7 。(十进制表示) 17.表达式10^2的值为 8 。(十进制表示)

18.Java语言中的逻辑与(&&)和逻辑或(||)运算采用 短路 方式进行运算。

19.若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为 82 。

20.假设i=10, j=20, k=30,则表达式 !(i

1.编写一个Java Application类型的程序,定义一个byte类型的变量b,并从键盘上给它赋值为-100和100时,输出该变量的值。

【编程分析】要实现键盘输入一个byte类型的变量,首先创建输入流对象,再利用该对象的readLine()方法输入字符串,然后利用Byte类的parseByte()方法将输入的字符串转化为字节类型,最后通过System.out.println()方法输出该变量。 【参考程序】

import java.io.*;

public class X2_3_1 {

public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); byte b ;

String str = br.readLine(); b = Byte.parseByte(str); System.out.println(b); b = Byte.parseByte(str); System.out.println(b); } }

【运行结果】

-200 5

Exception in thread \ at java.lang.Byte.parseByte(Byte.java:124) at java.lang.Byte.parseByte(Byte.java:79) at EX11_1.main(EX11_1.java:8)

注意:给b赋值的范围只能在-128至127之间,如果超出这个范围,则发生例外。 3.编写一个Java Application类型的程序,从键盘上输入三角形的三条边的长度,计算三角形的面积和周长并输出。根据三角形边长求面积公式如下:

area?s*(s?a)*(s?b)*(s?c),

其中a、b、c为三角形的三条边,s=(a+b+c)/2。

【编程分析】该程序由于涉及到数据输入,因此首先建立输入流对象,输入三角形三

条边a、b、c的值,然后求出中间变量s的值,最后利用数学方法Math.sqrt()方法求出三角形的面积并输出。 【参考程序】 import java.io.*;

public class X2_3_3 {

public static void main(String[] args) throws IOException{

InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); double a, b, c, s, area; String str;

str = br.readLine();

a = Double.parseDouble(str); str = br.readLine();

b = Double.parseDouble(str); str = br.readLine();

c = Double.parseDouble(str); s = (a+b+c)/2.0;

area = Math.sqrt(s*(s-a)*(s-b)*(s-c)); System.out.println(\ } }

【运行结果】 3 4 5 area = 6.0

注意:输入的三角形的三条边必须满足三角形的构成规则,如果不满足则输出错误结果。

5.已知圆球的体积公式为4/3?r3,编一程序,输入圆球半径,计算并输出球的体积。 【编程分析】该程序和第3题类似,在此不再赘述。 【参考程序】

import java.io.*;

6

public class X2_3_5 {

public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int radius;

double volume; String str;

System.out.print(\ str = br.readLine(); radius = Integer.parseInt(str);

volume=4*Math.PI*Math.pow(radius,3)/3; System.out.println(\ } }

【运行结果】

Enter the value of radius please: 26 volume = 73622.17663932561

第3章

一、选择题

1.下列( D )不属于Java语言流程控制结构?

(A)分支语句 (B)跳转语句 (C)循环语句 (D)赋值语句

【解析】Java语言流程控制结构只包括分支、循环和跳转三种语句。

2.假设a是int类型的变量,并初始化为1,则下列( D )是合法的条件语句?

(A)if(a){} (B)if(a<<=3){} (C)if(a=2){} (D)if(true){} 【解析】条件语句中的“条件表达式”只能是boolean类型,不能是其他类型。 3.下列说法中,不正确的一个是( C )。

(A)switch语句的功能可以由if…else if语句来实现

(B)若用于比较的数据类型为double型,则不可以用switch语句来实现 (C)if …else if语句的执行效率总是比switch语句高

(D)case子句中可以有多个语句,并且不需要大括号{}括起来

【解析】语句的执行效率高低要根据具体语句来确定,不能简单地说if …else if语句的执行效率总是比switch语句高。

4.设a、b为long型变量,x、y为float型变量,ch为char类型变量且它们均已被赋值,则下列语句中正确的是( B )。

(A)switch(x+y) {} (B)switch(ch+1) {} (C)switch ch {} (D)switch(a+b); {}

【解析】switch后面的表达式必须放在括号()中,且表达式的类型只能是byte、short、int和char类型,不能是其他类型。 5.下列循环体执行的次数是( C )。

int y=2, x=4;

while(--x != x/y){ }

7

(A)1 (B)2 (C)3 (D)4 【解析】第1次执行while时,--x的值为3,3/2=1,满足等号两端值不等的条件,执行一次循环体;第2次执行while时,--x的值为2,2/2=1,条件满足,又执行一次循环体;第3次执行while时,--x的值为1,1/2=0,条件满足,再次执行一次循环体;第4次执行while时,--x的值为0,0/2=0,条件不满足满足,结束循环。因此在这个循环语句执行的过程中,循环体共执行了3次。 6.下列循环体执行的次数是( B )。

int x=10, y=30;

do{ y -= x; x++; }while(x++

【解析】执行1次循环体后,y的值为20,x值为11,然后执行while,此时x++的值为11,y—的值为20,因此x++

switch(m){ case 0: System.out.println(\ case 1: System.out.println(\ case 2: System.out.println(\ case 3: System.out.println(\ default:System.out.println(\ }

当m的值为( D )时,输出“Condition 3” (A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3 【解析】当m的值为0、1、2、3时,都能输出“Condition 3”,因为case 0、case 1、case 2后面的语句都没有break,因此可以继续向后执行。 二、填空题

1.跳转语句包括break、continue、return和throw 2.switch语句先计算switch后面的 表达式 的值,再和各 case 语句后的值做比较。

3.if语句合法的条件值是 boolean 类型。 4.continue语句必须使用于 循环 语句中。

5.break语句有两种用途:一种从switch 语句的分支中跳出,一种是从循环语句内部跳出。

6.do - while循环首先执行一遍 循环体 ,而while循环首先判断 表达式的值 。 7.与C++语言不同,Java语言不通过 goto 语句实现跳转。

8.每一个else子句都必须和它前面的一个距离它最近的 if 子句相对应。

9.在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的 case 语句块。

10.在for循环语句中可以声明变量,其作用域是 for循环体 。 三、写出下列程序的运行结果

1. public class X3_3_1 {

8