admin 管理员组文章数量: 887021
2024年2月25日发(作者:indexof越界)
JAVA各章习题及答案
面向对象程序设计―Java语言习题答案
第1章
一、选择题
1.下列选项中,不属于Java语言特点的一项是( C )。 (A)分布式 (B)安全性
(C)编译执行 (D)面向对象
Java程序采用解释执行的方法。在系统编译运行Java程序时,Java编译器将Java程序转化为字节码,在运行时,解释器将编译得到的字节码进行解释执行。 2.在Java语言中,( C )是最基本的元素?
(A)方法 (B)包 (C)对象 (D)接口 构成Java程序的基本元素类(抽象的对象)。
3.编译一个定义了3个类和10个方法的Java源文件后,会产生( D )个字节码文件?扩展名是( D )?
(A)13个字节码文件,扩展名为.class (B)1个字节码文件,扩展名为.class
(C)3个字节码文件,扩展名为.java (D)3个字节码文件,扩展名为.class
源文件中的每一个类编译后都会生成一个字节码文件,字节
码文件的扩展名是.class。
5.Java语言属于( B )种语言?
(A)面向机器的语言 (B)面向对象的语言 (C)面向过程的语言 (D)面向操作系统的语言 Java语言是一种纯面向对象的语言。
6.下列关于Application和Applet程序的说法中不正确的一项是( B )。
(A)Application使用解释器 (B)Application不使用独立的解释器 (C)Applet在浏览器中运行 (D)Applet必须继承Java的Applet类
Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。
7.下列选项中,不属于Java核心包的一项是( A )。
(A) (B) (C) (D)
凡是以java开头的包都是Java核心包,以javax开头的包则属于Java扩展包。
8.下列描述中,不正确的是( A )。
(A)不支持多线程 (B)一个Java源文件不允许有多个公共类 (C)Java通过接口支持多重继承 (D)Java程序分为Application和Applet两类
Java是支持多线程的语言。
9.阅读下列代码,选出该代码段正确的文件名( C )。
1
class A{ void method1(){ n( } }
public class B{ void method2(){ n( } public
static void main(String[] args){ n( } }
(A) (B) (C) (D)
Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。 10.编译下面源程序会得到哪些文件( D )?
class A1{ }
class A2{ }
public class B{ public static void main(String[] args){ } }
(A)只有文件 (B)只有和文件
(C)编译不成功 (D)、和文件
由于该程序包含3个类,每个类编译后都会生成1个字节码文件,因此编译后会生成以这3个类名命名的字节码文件。 二、填空题
1.Java程序的编译和执行模式包括2点,是 半编译 和 半解释 。 2.Java语言支持 TCP/IP 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的 对象 。
3.开发Java程序的一般步骤是:源程序编辑、 生成字节码
和 解释执行 。 4.每个Java Application程序可以包括许多方
法,但是必须有且只能有一个 main() 方法,统一格式为 public
static void main(String[] args) ,它是程序执行的入口。
5.JVM把字节码程序与各种不同的 操作系统 和 硬件 分开,使得Java程序独立于平台。
6.在Java程序中,能在WWW浏览器上运行的是 Applet
程序。 7.Java源程序文件和字节码文件的扩展名分别为 .java
和 .class 。
8.如果在Java程序中需要使用包中的所有类,则应该在程序开始处加上 import .* 语句。
2
第2章
一、选择题
1.下列( D )是合法的标识符?
(A)12class (B)void (C)-5 (D)_blank 根据Java标识符的构成规则确定。 2.下列( B )不是Java中的保留字?
(A)if (B)sizeof (C)private (D)null 根据Java保留字表进行选择。 3.下列( C )不是合法的标识符?
(A)$million (B)$_million (C)2$_million (D)$2_million
根据Java标识符的构成规则确定。 4.下列选项中,( B )不属于Java语言的基本数据类型?
(A)整数型 (B)数组 (C)浮点型 (D)字符型 根据
Java语言的基本数据类型包含的类别选取。 5.下列关于基本数据类型的说法中,不正确的一项是( D )。
(A)boolean类型变量的值只能取真或假 (B)float是带符号的32位浮点数 (C)double是带符号的64位浮点数 (D)char是8位Unicode字符
Java中的字符采用的是16位的Unicode字符。
6.下列关于基本数据类型的取值范围的描述中,正确的一个是( B )。
(A)byte类型的取值范围是-128~128 (B)boolean类型的取值范围是真或假 (C)char类型的取值范围是0~__ (D)short类型的取值范围是-__~__
根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128~127,其他类型也是如此。 8.下列Java语句中,不正确的一项是( C )。
(A)$e, a, b = 10; (B)char c, d = ?a‘; (C)float e = 0.0d;
(D)double c = 0.0f; 不能将double类型的常量赋值给float类型的变量。
9.在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是( D )。
(A)byte的默认值是0 (B)boolean的默认值是false (C)
char类型的默认值是‘0‘ (D)long类型的默认值是0.0L long类型的默认值是0L,而不是0.0L。 10.下列语句中不正确的一个是( B )。
(A)float f = 1.1f; (B)byte b = 128; (C)double d =
1.1/0.0; (D)char c = (char)1.1f; bytel类型变量的取值范围是-128~127。 11.下列表达式1+2+ 的值是( B )。
(A) (B) (C) (D)
整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。
3
12.已知y=2, z=3, n=4,则经过n=n+ -y*z/n运算后n的值为( A )。
(A)3 (B)-1 (C)-12 (D)-3
根据运算符的优先级,该表达式相当于n=n+ ((-y)*z)/n。
13.已知a=2, b=3,则表达式a%b*4%b的值为( A )。
(A)2 (B)1 (C)-1 (D)-2
根据运算符的优先级,该表达式相当于((a%b)*4)%b。 14.已知x=2, y=3, z=4,则经过z- = --y C x--运算后,z的值为( D )。
(A)1 (B)2 (C)3 (D)4
在表达式运算过程中,--y的值变为2,x―的值还是2,等号右侧运算后的值为0,因此z的值没有变化。
15.表达式(12==0) (1/0 1)的值为( B )。
(A)true (B)false (C)0 (D)运行时抛出异常
由于(12==0)的值为false,因此整个表达式发生短路运算,即(1/0 1)就没有参与运算,整个表达式的值为false。
16.设有类型定义short i=32; long j=64; 下面赋值语句中不正确的一个是( B )
(A)j=i; (B)i=j; (C)i=(short)j; (D)j=(long)i;
long类型的数据不能自动转变为short类型,因此不能将long类型的变量直接赋值给short类型。
17.现有1个char类型的变量c1=66和1个整型变量i=2,当执行c1=c1+(char)i;语句后,c1的值为( D )。
(A)'d' (B)'D' (C)68 (D)语句在编译时出错
两个字符型的数据相加,得到的是一个整数,而如果把整数再赋值给一个字符型变量则会在编译时出错。
18.下列说法中,正确的一项是( D )。
(A)字符串的长度为6 (B)False是Java的保留字 (C)123.45L代表单精度浮点型 (D)False是合法的Java标识符
Java语言对字符的大小写是敏感的,False不是false,因此False是合法的Java标识符。
19.以下的变量定义语句中,合法的是( D )
(A)float _*5 = 123.456F; (B)byte $_b1 = __; (C)int
_long_ = __L; (D)double d = _VALUE; (A)中_*5不是合法的标识符,(B)中__超出byte范围,(C)中不能将long类型的常量赋值给int型的变量。
20.下列关于运算符优先级的说法中,不正确的一个是( C )
(A)运算符按照优先级顺序表进行运算
(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的 (C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的
(D)括号可以改变运算的优先次序
同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。 二、填空题
1.变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:字符型 和 数值型 。
2.Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是
4
byte、 int 、 short 和long。
3. boolean 类型数据不可以做类型转换。
4.在Java语言的基本数据类型中,占存储空间最少的类型是 boolean ,该类型占用的存储空间为 1 位。
5.Java语言中的 保留字 具有特殊意义和作用,不能作为
普通标识符使用。 6.在Java语言中,浮点类型数据属于实型数据,可以分为 单精度 和 双精度 两种。 7.char类型的数据可以表示的字符数共为 __ 。 8.定义初始值为10的8次方的常整型变量iLong的语句是 final iLong = __-__0L 。 9.Java语言中的数据类型转换包括 自动转换 和 强制转换 两种。 10.Java中的字符采用的是16位的 Unicode 编码。
11.数据类型中存储空间均为64位的两种数据类型是 long
和 double 。 12.表达式9*4/ -5%5的值为 -2 。(十进制表示)
13.表达式52的值为 0 。(十进制表示) 14.表达式424的值为 672 。(十进制表示) 15.表达式__-__3的值为 __ 。(二进制表示) 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()方法将输入的字符串转化为字节类型,最后通过n()方法输出该变量。 【参考程序】
import .*;
public class X2_3_1 {
public
IOException{
static void main(String[]
isr
args)
=
throws
new InputStreamReader
InputStreamReader(); BufferedReader br = new
BufferedReader(isr); byte b ;
String str = ne(); b = yte(str);
n(b);
n(b); } }
【运行结果】
-200 5
Exception in thread at
at
at
b = yte(str);
yte(:124)
yte(:79)
EX11_(EX11_: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的值,最后利用数学方法()方法求出三角形的面积并输出。 【参考程序】
import .*;
public class X2_3_3 {
public static void main(String[] args) throws IOException{
InputStreamReader isr = new InputStreamReader();
BufferedReader br = new BufferedReader(isr); double a, b, c, s,
area; String str;
str = ne();
a = ouble(str); str = ne();
b = ouble(str); str = ne();
c = ouble(str); s = (a+b+c)/2.0;
area = (s*(s-a)*(s-b)*(s-c)); n( } }
【运行结果】 3 4 5 area = 6.0
注意:输入的三角形的三条边必须满足三角形的构成规则,
如果不满足则输出错误结果。
5.已知圆球的体积公式为4/3?r3,编一程序,输入圆球半径,计算并输出球的体积。 【编程分析】该程序和第3题类似,在此不再赘述。 【参考程序】
import .*;
6
public class X2_3_5 {
public
IOException{
static void main(String[]
isr
args)
=
throws
new InputStreamReader
InputStreamReader(); BufferedReader br = new
BufferedReader(isr); int radius;
double volume; String str;
(
nt(str);
volume=4**(radius,3)/3;
n( } }
【运行结果】
Enter the value of radius please: 26 volume = __.__
第3章
一、选择题
1.下列( D )不属于Java语言流程控制结构?
str = ne(); radius =
(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: n( case 1:
n( case 2: n( case 3:
n( default:n( }
当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
public static void main(String[] args) {
for(int i=0; i i++){ if(i==5) break; (i); } } }
【运行结果】01234
【程序解析】本程序主要考查break语句的使用。程序中的for循环变量i是从0到9进行循环,正常情况下应该输出0到9,但是由于循环体中有“if(i==5) break;”语句,当i为5时for循环就结束了,因此最后的结果是01234。 2.public class X3_3_2
{
public static void main(String[] args) { int i=5, j=2; while(j
【运行结果】4
【程序解析】本程序主要考查while语句以及“后缀--”运算符的使用。由于每执行一次while判断,i的值就减1,每执行1次循环体,j的值就增加1,而while判断总共经历了“25”、“34”、“43”三次,第3次时由于条件不满足,还没有执行循环体就结束了循环,因此循环体总共执行了2次,j的值也只加了2,而其初始值为2,因此j最后的值为4。
3.public class X3_3_3 {
public static void main(String[] args) { int i=4;
while(--i0){ } (i); } }
【运行结果】0
【程序解析】本程序主要考查while语句以及“前缀--”运算
符的使用。由于i的初值为4,要使“while(--i0)”结束执行,必须等到i的为0,因此i最后的值为0。 4.public class X3_3_4 {
public static void main(String[] args) { int j=0;
for(int i=3; i i--){ j += i; int x = 2; while(x
9
} }
}
【运行结果】__-__
【程序解析】本程序主要考查for循环和while循环嵌套的情况。在for循环第1次执行到while语句时,j和x的值分别为3和2,此时“while(x 0”条件满足,进入for循环体。在for循环第2次执行到while语句时,j和x的值分别为5和2,此时“while(x 0”条件不满足,退出for循环,结束程序执行。
5. public class X3_3_5 {
public static void main(String[] args) { int i=8, j=2; while(j --i) for(int k=0; k k++) j++; (j); } }
【运行结果】6
【程序解析】本程序主要考查while循环和for循环嵌套执行的情况。第1次执行“while(j --i)”时,j和―i的值分别为2和7,条件满足,执行for循环,for循环体共执行了4次,j的值增4,变为6;然后又第2次执行“while(j --i)”,此时j和―i的值分
别为6和6,条件不满足,结束while循环,输出j的值。 6. public
class X3_3_6 {
public static void main(String[] args) { int a=0, b=1;
do{ if(b%2==0) a += b; b++;
}while(b = 100); (a); } }
【运行结果】2550 【程序解析】本程序主要考查do。while循环的执行情况。执行循环体之前,a=0,b=1,进入循环体后,由于“b%2==0”的条件不满足,因此直接执行“b++”,b的值变为2,满足“while(b = 100)”条件,再次进入循环体。此时“b%2==0”的条件满足,语句“a+=b”执行,然后执行“b++”,再进行“while(b
= 100)”判断,如此一直执行下
10
去,直至该条件不满足为止,最后输出a的值。从循环过程来看,只有b为偶数时才加到a中去,因此a的值应该是“2+4+6+。+100”。 7. public class X3_3_7 {
public static void main(String[] args) { for(int i=1; i i++){ if(i=5)
continue; (i + } } }
【运行结果】6 7 8 9 10
【程序解析】本程序主要考查continue语句的使用情况。由于“if(i=5) continue;”语句,使得for循环变量i从1到5的循环过程中都不能执行“(i + ”,只有i的值从6到10时
才执行该语句,因此输出结果为“6 7 8 9 10”。 8. public class
X3_3_8 {
public static void main(String[] args) { char ch='7'; int r=10;
switch(ch+1){ case '7': r += 7; case '8': r += 8; case '9': r +=
9; default: }
(r); } }
【运行结果】27
【程序解析】本程序主要考查switch。case语句,由于“ch+1”的值是'8',因此程序执行了“r += 8;”语句,由于该语句后没有break,因此又执行了后面的“r += 9;”语句,由于r的初值为10,因此r最后的值为27。 9. public class X3_3_9 {
public static void main(String[] args) { lable: for(int i=0; i i++){
for(int j=0; j j++){
if(i==j) continue lable; (i*3+j+ }
( } } }
【运行结果】3 6 7
【程序解析】本程序主要考查continue lab语句的运行情况。当程序执行到“continue
11
lable;”语句时,程序直接跳转到外层for循环,执行下一次循环。 10. public class X3_3_10 {
public static void main(String[] args) { int j=0;
a1: for(int i=3; i i--){ j += i;
a2: for(int k=1; kk++){ j *= k; if(i==k) break a1; } }
n( } }
【运行结果】j= 16
【程序解析】本程序主要考查break lab语句的执行情况。当程序执行到“break a1;”时,程序流程直接跳出a1所在的外层for循环,输出j的值。 四、编写程序
1.利用if语句,根据下列函数编写一个程序,当键盘输入x值时,求出并输出y的值。
x (x=1) 3x-2 (1 10) 4x (x=10) y = 【编程分析】本题主要考查if。else语句的使用。根据给定的数学算式,只要给出x的值,就有对应的y算式,因此利用if。else语句直接可以实现。
【参考程序】 import .*;
public class X3_4_1 {
public
IOException{
static void main(String[]
isr
args)
=
throws
new InputStreamReader
InputStreamReader(); BufferedReader br = new
BufferedReader(isr); int x, y; x = nt(ne());
if(x=1) y = x; else if(x10) y = 3__ - 2; else y=4__;
n( } }
【运行结果】
9 x = 9 y = 25
3.利用for循环,计算1+3+7+??+(220-1)的和。
12
【编程分析】本例主要考查利用for循环求一个数列的和的编程方法。数列的项数和每一项的值都已知,因此直接利用for循环和数学类中的相应方法即可实现。 【参考程序】
public class X3_4_3 {
public static void main(String[] args) { int i, sum=0;
for(i=1; i i++) sum += (2,i) - 1;
n( } }
【运行结果】
sum = __-__ 4.已知S?1?__??????,利用while循环编程求解n=100时的S234n?1n值。
【编程分析】本例主要考查利用while循环实现对一个数列进行加、减运算的编程方法。由于项数已经确定,因此数列的首项和末项已知,但是由于加减交替出现,可以利用一个变量sign来确定符号,设sign初始值为1,循环一次让它变一次符号,从而实现符号的交替变化。 【参考程序】
public class X3_4_4 {
public static void main(String[] args) { int i=1, n = 100;
double sign = 1, sum = 0; while(i=n){ double k = sign/i; sum
+= k; i++; sign = -sign; }
n( } }
【运行结果】
S = 0.688__5
5.利用do。while循环,计算1!+2!+3! +??+100!的和。
【编程分析】本例主要考查利用do。while循环实现数列相加的程序设计方法。由于每一项都是一个阶乘,所以在循环过程中先求阶乘,然后再相加。 【参考程序】
public class X3_4_5 {
public static void main(String[] args) { int i=1;
long fact = 1, sum = 0;
13
do{ fact *= i; sum += fact; i++;
} while(i=100) ;
n( } }
【运行结果】
sum = __-__
9.水仙花数是指其个位、十位和百位三个数的立方和等于这个三位数本身,求出所有的水仙花数。
【编程分析】本例主要考查如何利用循环结构将一个多位整
数拆分成多个个位数的程序设计方法。在求“水仙花数”过程中,需要将这个百位的数拆分成3个个位数。 【参考程序】
public class X3_4_9 {
public static void main(String[] args) { for(int
i=100;i=999;i++){ int k = i; int gw = k % 10; k /= 10; int sw = k %
10; k /= 10; int bw = k; int sum =
(int)((gw,3)+(sw,3)+(bw,3)); if(i ==
sum) (i+ } } }
【运行结果】
153 370 371 407
第4章
一、选择题
1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( D ) (A)protected (B)public (C)default (D)private
只有私有访问权限修饰符才能限制变量只能在本类中被访问。
2.在Java语言中,哪一个包中的类是自动导入的?( A ) A) B) C) D) 只有包中的类能够被自动导入。 3.给出下面的程序代码:
public class X4_1_3 {
14
private float a; public static void m ( ){ }
}
如何使成员变量a被方法m( )访问( C ) (A)将private
float a改为protected float a(B)将private float a改为public
float a
(C)将private float a改为static float a (D)将private
float a改为float a static类型的方法只能访问static类型的数据成员。 4.有一个类B,下面为其构造方法的声明,正确的是( B )。
(A)void B(int x) {} (B)B(int x) {} (C)b(int x) {} (D)void
b(int x) {} 构造方法没有类型,且方法名与类名相同。 5.下面关于类的说法,不正确的是( C )。 (A)类是同种对象的集合和抽象 (B)类属于Java语言中的复合数据类(C)类就是对象
(D)对象是Java语言中的基本结构单
型
位
类是对象的抽象,对象是类的实例,因此类和对象是有区别的。
6.下面关于方法的说法,不正确的是( C )。 (A)Java中的构造方法名必须和类名相同
(B)方法体是对方法的实现,包括变量声明和合法语句
(C)如果一个类定义了构造方法,也可以用该类的默认构造方法 (D)类的私有方法不能被其他类直接访问
类中一旦用户定义了构造方法,该类默认的构造方法就不存在了,除非用户再自定义该类的默认构造方法。
7.关于内部类,下列说法不正确的是( A )。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰
(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员 (D)除static内部类外,不能在类内声明static成员
内部类也可以有自己的成员方法和变量。
8.定义外部类时不能用到的关键字是( C )。 (A)final
(B)public (C)protected (D)abstract 定义外部类不能使用protected修饰符。
9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( D ) (A)abstract void f()
(B)public void f() (C)final void f() (D)static void f()
只有static类型的方法才可以直接使用类名来引用。
10.定义一个公有double型常量PI,哪一条语句最好?( B )
(A)public final double PI; (B)public final static double
PI=3.14; (C)public final static double PI; (D)public static double
PI=3.14;
用public final static来定义常量,既可以节省存储空间,又可以保证数值不会被改变。
15
二、填空题
1. 对象 是对事物的抽象,而 类 是对对象的抽象和归纳。
2.从用户的角度看,Java源程序中的类分为两种: 系统定义的类 和 用户自己定义的类 。
3.一个类主要包含两个要素: 数据成员 和 成员方法 。
4.创建包时需要使用关键字 package 。
5.类中的 构造 方法是一个特殊的方法,该方法的方法名和类名相同。
6.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个默认构造方法。这个方法没有 形式参数 ,也没有任何 具体语句 ,不能完成任何操作。
7.静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是 相同 (相同/不同)的数值。
8.静态数据成员既可以通过 对象名 来访问,也可以通过
类名 直接访问它。 9.定义常量时要用关键字 final ,同时需要说明常量的 数据类型 并指出常量的 具体值 。
10.方法体内定义变量时,变量前不能加 修饰符 ;局部变量在使用前必须 明确赋值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 默认 的值。
11.static方法中只能引用 static 类型的数据成员和 static
类型的成员方法;而非static类型的方法中既可以引用 static 类型的数据成员和成员方法,也可以引用非static 类型的数据成员和成员方法。
12.引用static类型的方法时,可以使用 类名 做前缀,也可以使用 对象名 做前缀。
13.当程序中需要引用包中的类时,导入该包中类的语句为 import .*。
14.定义类时需要 class 关键字,继承类时需要 extends 关键字,实现接口时需要关键字 implements 。 三、编程题
1、一个学生类(Student),包含:
属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。
方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。
主类(X4_3_2),包含:
主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。
【编程分析】按照要求首先编写Student类,其中的属性和方法根据实际情况选择相应的类型和权限修饰符,要通过方法来
修改年龄,因此s_Age属性应该为private类型,否则可以直接在主类中进行修改,就没有必要使用方法了。 【参考答案】
public class X4_3_2 {
public static void main(String[] args) {
16
Student s1 = new Student(101,张三男 Student s2 = new
Student(102,李四女 n(第1个学生的信息为: (); me(); x(); e();
n(第2个学生的信息为: ();
me(); x(); e();
n(修改第1个学生的年龄:
Age(24);
n(第1个学生的年龄修改为:
e(); } }
class Student{ private int s_No; private String s_Name; private
String s_Sex; private int s_Age; Student(int no, String name, String
sex, int age){ s_No = no; s_Name = name; s_Sex = sex; s_Age =
age; } void showNo(){ n(学号: } void
showName(){
showSex(){
n(姓名:
n(性别:
}
}
void
void
showAge(){ n(年龄: } void modifyAge(int
newAge){ s_Age = newAge; }
17
}
第5章
一、选择题
1.已知有下面类的说明:
public class X5_1_1 extends x{ private float f =10.6f; int i=16;
static int si=10;
public static void main(String[] args) { X5_1_1 x=new
X5_1_1(); } }
在main()方法中,下面哪条语句的用法是正确的?( A )
A.x.f B. C.X5_1_1.i D.X5_1_1.f
由于x是在main方法内部定义的对象,因此它可以引用类的非static类型的属性,因此选A,而this和super不能在main方法中使用,使用类名只能引用本类的静态属性,因此B、C、D不对。 2.下列程序的运行结果是( C )。
public class X5_1_2 extends x{ int ab(){
static int aa=10; aa++;
n(aa); }
public static void main(String[] args) { X5_1_2 x=new X5_1_2();
(); } } A.10 B.11 C.编译错误 D.运行成功,但不输出 方
法体内的局部变量不能使用static修饰符。 3.下面关于接口的说法中不正确的是( C )。 A.接口中所有的方法都是抽象的
B.接口中所有的方法都是public访问权限
C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法
子接口继承父接口所用的关键字也是extends,只有类实现接口时才使用implements。
4.区分类中重载方法的依据是( A )。 A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同
18
形参表的类型和顺序不同时区分重载方法的唯一标志。
5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( B ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 子类对象可以直接赋值给父类对象,而父类对象不能直接赋值给子类对象。 6.Java语言类间的继承关系是( A )。
A.单继承 B.多重继承 C.不能继承 D.不一定 Java语言类间的继承关系是单继承,但一个类可以实现多个接口。 7.Java语言接口间的继承关系是( B )。 A.单继承 B.多重继承 C.不能继承 D.不一定 Java语言接口间的继承关系允许多重继承。
8.一个类实现接口的情况是( A )。 A.一次可以实现多个接
口 B.一次只能实现一个接口 C.不能实现接口 D.不一定 Java语言允许一个类一次实现多个接口。 9.定义外部类的类头时,不可用的关键字是( C )。 A.public B.final C.protected
D.abstract 定义外部类时不能使用protected关键字。 10.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( B )
A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量 C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分 this可以用来引用本类对象。 11.下面说法不正确的是( B )。
A.抽象类既可以做父类,也可以做子类 B.abstract和final能同时修饰一个类
C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口 D.声明为final类型的方法不能在其子类中重新定义
abstract和final不能同时修饰一个类,因为abstract类需要子类,而final类不能有子类。 二、填空题
1.消息就是向对象发出 服务请求 ,是对 数据成员 和 成员方法 的引用。 2.在面向对象系统中,消息分为两类 公有消息 和 私有消息 。
3.在面向对象程序设计中,采用 继承 机制可以有效地组织程序结构。充分利用已有的类来创建更复杂的类,大大提高程序开发的效率,提高代码的复用率,降低维护的工作量。
4. 数据成员的隐藏 是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员。
5.子类可以重新定义与父类同名的成员方法,实现对父类方法的 覆盖 。
7.this代表了 当前对象 的一个引用,super表示的是当前对象的 直接父类对象 的引用。
8.抽象类不能 创建 对象,该工作由抽象类派生的非抽象子类来实现。
9.如果父类中已有同名的abstract方法,则子类中就 不能
(能/不能)再有同名
的抽象方法。
19
10.abstract类中不能有 private 访问权限的数据成员或成员方法。
11. interface 是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员
默认的修饰符是 public static final ,接口中的成员方法默认的修饰符是 public abstract 。
13.包的作用有两个,一是 划分类名空间 ,二是 控制类之间的访问 。
14.封装也称 信息隐藏 ,是指类的设计者只为类的使用者提供类的可以访问的部
分(包括类的数据成员和成员方法),而把类中的其他成员
隐藏 起来,使用户不能访问的机制。
15.Java提供了4种访问权限来实现封装机制,即 private 、
protected 、 默认 和 public 。
16.Java中提供两种多态机制, 重载 与 覆盖 。 三、编程题
5.编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。最后编写一个主类X5_3_5,包含main()方法,在main()方法中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄。
【编程分析】本题主要考察类的继承问题。
第一步:定义Person类。
第二步:定义Student类,该类继承Person类。 第三步:定义主类。 【参考程序】
public class X5_3_5 {
public static void main(String[] args) {
Student s1=new Student( Student s2=new Student(
(); (); (); (); }}
class Person{ String name; String sex; int age;
public Person(String n,String s,int a){ name = n; sex = s; age
= a;} void show(){
n(
n( }}
20
class Student extends Person{ String sID;
public Student(String n,String s,int a,String sid){ super(n,s,a);
sID = sid; }
void showID(){
n( }}
第6章
一、选择题
1.给出下面程序代码:
byte[] a1, a2[]; byte a3[][]; byte[][] a4;
下列数组操作语句中哪一个是不正确的?( A ) A.a2 =
a1 B.a2 = a3 C.a2 = a4 D.a3 = a4 只有维数相同的数组才能相互赋值。 2.关于数组,下列说法中不正确的是( C )。
n(
A.数组是最简单的复合数据类型,是一系列数据的集合
B.数组元素可以是基本数据类型、对象或其他数组 C.定义数组时必须分配内存
D.一个数组中所有元素都必须具有相同的数据类型
数组元素可以是基本数据类型、对象或其他数组。 3.设有下列数组定义语句:
int a[] = {1, 2, 3};
则对此语句的叙述错误的是( C )。 A.定义了一个名为a的一维数组 B.a数组有3个元素 C.a数组元素的下标为1~3 D.数组中每个元素的类型都是整数 数组元素的下标是从0开始的。
4.执行语句:int[] x = new int;后,下面哪个说法是正确的?( C ) A.x为空 B.x未定义 C.x为0 D.x为空 此语句定义了x数组后,x~x的值全部为0。 5.下面代码运行后的输出结果为( A )。
public class X6_1_5 {
public static void main(String[] args) { AB aa = new AB(); AB
bb; bb = aa;
n((aa)); }}
class AB{ int x = 100; } A.true
B.false C.编译错误 D.100
21
同一个类的两个对象可以相互赋值,赋值后两个对象具有相同的存储空间,因此是相同的。
6.已知有定义:String s=,下面哪个表达式正确?( A )
A.s += B.char c = s; C.int len = ; D.String s =
rCase();
字符串对象可以执行“+=”运算,但不能用s这种方式取其中的字符,也不能用length求它的长度,可以用length()求其长度,因此B、C不正确,不能再次定义s字符串,因此D不正确。 二、填空题
1. Object类 是所有类的直接或间接父类,它在
包中。 2.System类是一个功能强大、非常有用的特殊的类,它提供了 标准输入/输出 、 运行时 系统信息等重要工具。这个类不能 实例化 ,即不能创建System类的对象,所以它所有的属性和方法都是 static 类型,引用时以类名System为前缀即可。
3.Applet由浏览器自动调用的主要方法 init , start , stop
和 destroy 分别对应了Applet从初始化、启动、暂停到消亡的生命周期的各个阶段 。
4.数组是一种 复合 数据类型,在Java中,数组是作为 对象 来处理的。数组是有限元素的有序集合,数组中的元素具有相同的 数据类型 ,并可用统一的 数组名 和 下标 来唯一确定
其元素。
6.数组初始化包括 静态 初始化和 动态 初始化两种方式。
7.利用 System 类中的 arraycopy() 方法可以实现数组元素的复制;利用 Arrays 类中的 sort() 和 binarySearch() 方法可以实现对数组元素的排序、查找等操作。 8.Java语言提供了两种具有不同操作方式的字符串类: String 类和 StringBuffer 类。它们都是 的子类。 三、写出下列程序的运行结果
1.public class X6_3_1 {
public static void main(String[] args) { int
a[]={12,39,26,41,55,63,72,40,83,95}; int i1=0,i2=0;
for(int i=0;i
n(i1+ }
【运行结果】 6 4
2.public class X6_3_2 {
public static void main(String[] args) { int
a[]={36,25,48,14,55,40,32,66}; int b1,b2; b1=b2=a;
for(int i=1;ib1 ){
if ( b1 b2 ) b2=b1;
22
b1=a[i]; }
n(b1+ } } 【运行结果】 66 55
3.public class X6_3_3 {
public static void main(String[] args) { int
a[]={36,25,48,14,55,40,32,66 }; int b1,b2; b1=b2=a;
for (int i=1;i
if ( b1
n(b1+ } }
【运行结果】 14 25
4.public class X6_3_4 {
public static void main(String[] args) { String str = char[] a
=Array(); int i1 =0, i2=0, i;
for(i=0;i
n(i1+ }}
【运行结果】 4 3
5.public class X6_3_5 {
public static void main(String[] args) { String str = char[] a =
Array(); int b[] = new int,i; for(i=0;i
case 'a': b ++; break; case 'b': b ++; break; case 'c': b ++;
break; case 'd': b ++; break;
23
default : b ++; } }
for(i =0; i i++)
(b[i]+ n(); } }
【运行结果】
4 3 2 2 3
6.public class X6_3_6 {
public static void main(String[] args) {
int a[] = {76,83,54,62,40,75,90,92,77,84}; int b[] =
{60,70,90,101}; int c[]=new int,i;
for (i=0; i
while (a[i] = b[j] ) j ++; c[j] ++; }
for (i=0; i i++)
(c[i]+ n(); }
【运行结果】
2 1 5 2
四、编程题
1.有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,试产生该数列的前20项,并按逆序显示出来。
【编程分析】本例由于涉及到20项数据的存储,因此可以利用数组来实现。由于数列的各项之间存在一定的关系,可以利用前两项来计算后面项。 【参考答案】
public class X6_4_1 {
public static void main(String[] args) { int[] a = new int; a=0;
a=1; int i;
for(i=2;ii++){ a[i]=a[i-1]+a[i-2]; // 求其余18项 }
for(i=0;ii++){ // 每一行显示5个元素 if(i%5 == 0)
n(); (a[i]+ }
24
n(); }} 【运行结果】
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584
4181
3.从键盘上输入4行4列的一个实数矩阵到一个二维数组中,然后求出主对角线上元素之乘积以及副对角线上元素之乘积。
【编程分析】本例主要考察二维数组及其动态初始化的方法。
第一步:创建输入流对象。
InputStreamReader isr = new InputStreamReader();
// 创建输入流对象
BufferedReader br=new BufferedReader(isr); 第二步:求主、付对角线乘积 for(i=0;i
import .*;
public class X6_4_3 {
public static void main(String[] args) throws
IOException{ final int M = 4;
double[][] a = new double[M][M]; int i,j;
double main_product=1.0,vice_product=1.0;
InputStreamReader isr = new InputStreamReader();
// 创建输入流对象
BufferedReader br=new BufferedReader(isr); for(i=0;i
n(主对角线乘积为: n(付对角线乘积为: } }
第7章
一、选择题
1.关于异常的含义,下列描述中最正确的一个是( D )。
25
A.程序编译错误 B.程序语法错误 C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件 异常就是程序编译或运行时发生的异常事件。
2.自定义异常时,可以通过对下列哪一项进行继承?( C )
A.Error类 B.Applet类 C.Exception类及其子类
D.AssertionError类 自定义异常类时,该类必须继承Exception类及其子类。
3.对应try和catch子句的排列方式,下列哪一项是正确的?( A ) A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常 D.父类和子类不能同时出现
在try语句块中
对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。
4.运行下面程序时,会产生什么异常?( A )
public class X7_1_4 {
public static void main(String[] args) { int x = 0; int y = 5/x;
int[] z = {1,2,3,4}; int p = z; } } A.ArithmeticException
B.NumberFormatException
C.ArrayIndexOutOfBoundsException D.IOException
当程序执行到“int y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。
5.运行下面程序时,会产生什么异常?( C )
public class X7_1_5 {
public static void main(String[] args) { int[] z = {1,2,3,4}; int p
= z; int x = 0; int y = 5/x; } } A.ArithmeticException
B.NumberFormatException
C.ArrayIndexOutOfBoundsException D.IOException
当程序执行到“int p = z”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。 6.下列程序执行的结果是( B )。
public class X7_1_6 {
public static void main(String[] args) { try{
return;
26
}
}
}
finally{
n(}
A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译
在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。 7.下列代码中给出正确的在方法体内抛出异常的是( B )。 A.new throw Exception( B.throw new
Exception(C.throws IOException(); D.throws IOException;
在方法体内抛出异常时只能使用throw,而不能使用throws,另外,“new Exception(”是创建一个异常,因此B是正确的。
8.下列描述了Java语言通过面相对象的方法进行异常处理的好处,请选出不在这些好处范围之内的一项( C )
A.把各种不同的异常事件进行分类,体现了良好的继承性
B.把错误处理代码从常规代码中分离出来 C.可以利用异常处理机制代替传统的控制流程
D.这种机制对具有动态运行特性的复杂程序提供了强有力的支持 异常处理机制不能代替传统的流程控制。 二、填空题
1.异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,出现在编译阶段的异常,称之为 编译时异常 ,出现在运行阶段的异常,称之为 运行时异常 。 2.根据异常的来源,可以把异常分为两种类型: 系统定义的运行时异常 和 用户自定义异常 。
3.所有的Java异常类都是系统类库中的 Exception 类的子类。
4.抛出异常分为 由系统自动抛出异常 、 通过throw抛出异常 以及 通过throws抛出异常 三种情况。 5.Java语言为我们提供了 try?catch 语句和try?catch?finally 语句捕捉并处理异常。 6.一个try块后面可能会跟着若干个 catch 块,每个 catch
块都有一个异常类名作为参数。
7.如果try语句块产生的异常对象被第一个catch块所接收,则程序的流程将 转向第一个catch块 ,catch语句块执行完毕后就 退出当前方法 ,try块中尚未执行的语句和其他的catch块将被 忽略 ;如果try语句块产生的异常对象与第一个catch块不匹配,系统将自动转到 第二个catch块 进行匹配。
8.由于异常对象与catch块的匹配是按照catch块的 先后
顺序进行的,所以在处理多异常时应注意认真设计各catch块的排列顺序。
9.throws语句抛出的异常实际上是由throws语句修饰的方法内部的 throw 语句抛出的,使用throws的主要目的是为了 通知所有预调用此方法的方法 。
27
第8章
一、选择题
1.下列数据流中,属于输入流的一项是( B )。
A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流
C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流
输入流是指从外围设备流向主机(包括CPU和内存)的数据流。
2.Java语言提供处理不同类型流的类所在的包是( D )。
A. B. C. D. 包是Java语言提供处理不同类型流的类所在的包。 3.不属于包中的接口的是( C )。
A.DataInput B.DataOutput C.DataInputStream
D.ObjectInput DataInputStream是包中的一个类,其他三个则是包中的接口。 4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入D//x‖处,
完成要求的功能( B )。 import .*; public class X8_1_4
{ public static void main(String[] args) { char ch; try{ //x
n(ch);
e){ tackTrace(); } } }
A.ch = (); B.ch = (char)(); C.ch
= (char)(); D.ch = (int)();
()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,对象中没有readln()方法。 5.下列程序实现了在当前包dir815下新建一个目录subDir815,选择正确的一项填入程序的横线处,使程序符合要求( D )。 package dir815; import .*;
public class X8_1_5 {
public static void main(String[] args){ char ch; try{ File path
= ; if(()) n( }
28
catch(Exception e){ tackTrace(); } } }
A.new File( B.new File( C.new File( D.new File(在程序中,目录之间的连接符是“”或“/”,因此首先排除B和C;而默认情况下,创建相对目录是在当前目录下进行,而dir815也在当前目录下,因此要在dir815下创建新的目录,就必须使用D的} catch(IOException
形式。
6.下列流中哪一个使用了缓冲区技术( A )?
A.BufferedOutputStream B.FileInputStream
C.DataOutputStream D.FileReader 只有BufferedOutputStream使用了缓冲区技术。
7.能读入字节数据进行Java基本数据类型判断过虑的类是( C )。
A.BufferedInputStream B.FileInputStream
C.DataInputStream D.FileReader
DataInputStream类在读入字节数据时,进行Java基本数据类型判断过虑。 8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )?
A.BufferedInputStream B.RandomAccessFile C.FileWriter
D.FileReader
只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。
9.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( C )?
A.PrintStream B.FileInputStream C.InputStreamReader
D.FileReader
InputStreamReader类的对象可以作为BufferedReader类构
造方法的参数。 10.若文件是RandomAccessFile的实例f,并且其基本文件长度大于0,则下面的语句
实现的功能是( B )。 (()-1);
A.将文件指针指向文件的第一个字符后面 B.将文件指针指向文件的最后一个字符前面 C.将文件指针指向文件的最后一个字符后面 D.会导致seek()方法抛出一个IOException异常
通过调用f对象的length()方法,可以将文件指针指向文件的末尾,因此()-1即指向文件的最后一个字符前面。
11.下列关于流类和File类的说法中错误的一项是( B )。
A.File类可以重命名文件 B.File类可以修改文件内容 C.流类可以修改文件内容 D.流类不可以新建目录 只有流类可以修改文件内容,而File类则不能。
12.若要删除一个文件,应该使用下列哪个类的实例( B )?
A.RandomAccessFile B.File C.FileOutputStream
D.FileReader
要删除文件以及查看文件属性等,应使用File类对象来实现。
29
13.下列哪一个是Java系统的标准输入流对象( )?
A. B. C. D.
是Java系统的标准输入流对象,而和则是Java系统的标准输出流和标准错误对象,
则是System类的退出方法。 14.Java系统标准输出对象使用的输出流是( A )。
A.PrintStream B.PrintWriter C.DataOutputStream
D.FileReader 属性是PrintStream类型的对象。 二、填空题
1.Java的输入输出流包括 字节流 、 字符流 、 文件流 、
对象流 以及多线程之间通信的 管道流 。
2.凡是从外部设备流向中央处理器的数据流,称之为 输入
流;反之,称之为 输出 流。
3.包中的接口中,处理字节流的有 DataInput 接口和 DataOutput 接口。
4.所有的字节输入流都从 InputStream 类继承,所有的字节输出流都从 OutputSteam 类继承。
5.与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读
写Unicode字符的字符流 Reader 类和 Writer 类。
6.对一般的计算机系统,标准输入通常是 键盘 ,标准输出通常是 显示器 。
7.Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们
是 和 。
版权声明:本文标题:JAVA各章习题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708851192h532609.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论