admin 管理员组

文章数量: 887021


2023年12月17日发(作者:c语言什么书好)

附录2:习题答案

第1章:Java简介 —— 自我检测(答案)

1、填空题

1、 Java源程序文件的后缀是 *.java ,Java字节码文件的后缀名称是 *.class 。

2、 Java程序实现可移值性,依靠的是 JVM 。

3、 Java语言的三个分支是: JAVA SE 、 JAVA ME 、 JAVA EE 。

4、 Java程序由 类 组成,如果Java使用 public class 声明类,则文件名称必须与类名称一致。

5、 Java执行是从 main() 方法开始执行的,此方法的完整定义是 public static void main(String args[]) 。

6、 从命名标准上来讲,Java类名的每个单词的首字母通常要求 大写 。

7、 当使用java命令解释一个程序时,一定需要 classpath 环境属性来定位类资源路径;

2、选择题

1、 下面那个是属于解释Java程序所使用到命令?(A)

A、

A、 path

A、 JavaSE

B、

C、

D、

D、TEMP

D、JavaME

2、 下面的那个环境变量java解释时所需要的 B 。

B、 classpath

B、 Java EE

C、 JAVA_HOME

C、 JavaCE

3、 下面那一种开发方向不属于Java定义的? C

3、判断题

1、 Java语言属于编译型的开发语言。

( × )

( × ) 2、 Java Application程序不是由main()方法开始执行的。

4、简答题

1、 简述Java实现可移值性的基本原理。

答:Java属于编译型和解释型的编程语言,所有的*.java程序必须编译为*.class文件之后才可以在电脑上执行,而执行*.class文件的电脑并不是一台真实的电脑,而是利用软件和硬件模拟出来的一台虚拟电脑,称为Java虚拟机,而针对于不同的操作系统平台,有不同版本的Java虚拟机,即:由Java虚拟机去适应不同的操作系统,即:只要Java虚拟机的支持没有改变,同一个*.class可以在不同的平台上运行。

2、 简述Java语言的三个程序分支。

答: JAVA SE(Java标准版):提供基础的Java类库及平台支持:

JAVA ME(Java微型版):提供嵌入式开发支持:

JAVA EE(Java企业版):提供企业平台支持。

3、 简述Java中path及classpath的作用。

答: PATH:是操作系统的环境属性,指的是可以执行命令的程序路径;

CLASSPATH:是所有*.class文件的执行路径,java命令执行的时候将利用此路径加载所需要的*.class文件。

4、 简述Java语言的主要特点。

答: Java语言的主要的特点如下:

1、 Java语言是一门面向对象语言,且语法足够简单;

2、 Java避免了C/C++之中复杂的指针关系,而使用了更为简单的引用方式来进行内存传递;

3、 Java是为数不多的支持多线程开发的编程语言;

4、 Java提供了自动的垃圾收集机制,可以定期释放出无用的垃圾空间;

5、 Java语言的安全性较高;

6、 Java最大的特点是具备可移植性,即:同一个程序在不同的操作系统上都可以运行。

5、 详细阐述Java中使用public class或class声明一个类的区别及注意事项。

答: 使用public class定义的类,要求文件名称和类名称保持一致,在一个*.java文件之中只能存在一个public class;

使用class定义的类,文件名称可以和类名称不一致,在一个*.java文件之中可以同时存在多个class定义,编译之后会产生多个*.class文件。

5、编程题

1、 在屏幕上输出:“我喜欢学习 Java”的信息。

答案:

public class TestDemo {

}

2、 在屏幕上打印出以下的图形:

*************************************

********* Java 程序设计 *********

*************************************

public class TestDemo {

}

public static void main(String[] args) {

}

n("*************************************");

n("********* Java 程序设计 *********");

n("*************************************");

public static void main(String[] args) {

}

n("我喜欢学习 Java");

答案:

第2章 简单Java程序 —— 自我检测(答案)

1、填空题

1、 Java中的标识符组成原则: 由字母、数字、下划线、$所组成,其中不能以数字开头,不能是Java的关键字 。

2、 assert 关键字是在JDK 1.4时加入的, enum 关键字是在JDK 1.5时加入的。

3、 列举出已经知道的5个关键字: public、static、void、int、double 。

4、 Java注释分为以下三种: 单行注释(//) 、 多行注释(/* …*/) 、 文档注释 。

5、 Java中使用 int 关键字,可以定义一个整型数据。

6、 在一个Java源文件中定义了3个类和15个方法,编译该Java源文件时会产生 3 个字节码文件,其扩展名是

*.class 。

7、 布尔型数据类型的关键字是 boolean ,有 true 和 false 两种取值。

8、 整型数可以采用 byte 、 short 、 int 和 long 四种类型表示。

9、 根据占用内存长度的不同将浮点型分为 float 和 double 两种。

10、 Java程序结构分为: 顺序结构 、 分支结构 、 循环结构 三种。

11、 逻辑表达式:true&&false&&true的结果是 false 。

12、 逻辑表达式:!true||false的结果是 false 。

13、 在方法中可以使用 return 语句来结束方法的执行。

14、 方法中的 void 关键字用来表示方法不返回任何值。

2、选择题

1、 下面那些标识符是正确的 D 。

A、 class

A、 const

B、 hello world

C、 123$temp

C、 int

D、 Demo

D、 assert

D、 String args

2、 下面那些关键字是Java中未使用到的关键字 A、B (多选)。

B、 goto

3、 public static void main方法的参数描述是: A 。

A、 String args[] B、 int[] args C、 Strings args[]

4、 下面说法正确的是 C 。

A、 Java程序的源文件名称与主类(puublic class)的名称相同,后缀可以是.java或.txt等。

B、 JDK的编译命令是java。

C、 一个java源文件编译后可能产生多个class文件。

D、 在命令行编译好的字节码文件,只需在命令行直接键入程序名即可运行该程序。

A、 Java语言是面向对象的、解释执行的网络编程语言

B、 Java语言具有可移植性,是与平台无关的编程语言。

C、 Java语言可对内存垃圾自动收集。

D、 Java语言执行时需要Java的运行环境。

A、 integer B、 double C、 float

D、 char

5、 下面说法不正确的是 A 。

6、 下面 A 不是Java的关键字。

7、 在Java中,字节数据类型的关键字和默认值是 A 。

A、 byte和0

A、 3.15 × 2

A、 1

A、 1

B、 byte和1

B、 3.15 × 10-2

B、 1 + 1 = 2

B、 3

C、 boolean和true D、 boolean和false

C、 3.15 × 102

C、 1 + 1 = 11

C、 3.3

D、 0.315 × 10-2

8、 3.15E2表示的数据是 C 。

9、 程序n("1 + 1 = " + 1 + 1) ;的输出结果是 C 。

D、 2

D、 3.33333

10、 程序n(10 / 3) ;的输出结果是 B 。

11、 执行下面的语句后,a、b、c的值分别是 C 。

int a = 2 ;

int b = (a++) * 3 ;

int c = (++a) * 3 ;

B、 4、9、9 C、 4、6、12

D、 "123"

D、 8.6F

D、 3、9、9 A、 2、6、6

A、 35.d

A、 33.8

12、 以下的 B 能正确表示Java语言中的一个整型常量。

B、 -20

B、 129

C、 1,234

C、 89L

13、 下面的数据类型 D 是float型

14、 下列关于自动类型转换的说法中,正确的一个是 B 。

A、 int类型数据可以自动转换为char类型数据

B、 char类型数据可以被自动转换为int类型数据

C、 boolean类型数据不可以做自动类型转换,但是可以做强制转换

D、 long类型数据可以被自动转换为short类型数据

A、 构造方法 B、 递归方法 C、 成员方法 D、 抽象方法

15、 一个方法在定义过程中又调用自身,这种方法称为 B 。

3、判断题

1、 变量的内容可以修改,常量的内容不可修改。

2、 goto是Java中未使用到的关键字。

3、 enum关键字是在JDK 1.4版本中增加的。

5、 主方法编写:public void main(String arg)。

6、 字符$不能作Java标识符的第一个字符。

8、 使用break语句可以跳出一次循环。

9、 byte的取值范围是:0~255。

√ )

√ )

× )

× )

× )

× )

× )

× )

× )

× )

× )

√ )

× )

√ )

× )

4、 使用public class定义的类,文件名称可以与类名称不一致。

7、 n()输出后是不加换行的,而()输出后是加换行的。

10、 int和double进行加法操作,int会自动转换为double类型。

11、 使用“&”操作时,如果第一个条件是false,则后续的条件都不再判断。

12、 使用“&&”操作时,如果第一个条件是false,则后续的条件都不再判断。

13、 使用“|”操作时,如果第一个条件是true,则后续的条件都不再判断。

14、 使用“||”操作时,如果第一个条件是true,则后续的条件都不再判断。

15、 定义多个同名方法时,可以依靠返回值区别同名方法。

4、简答题

1、 请解释常量与变量的区别?

答: 常量就是一个固定的数值。是不可改变的,例如:数字1、2就是一个整型的常量。

变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用。可以声明的数据类型为整型、字符型、浮点型或是其他数据类型,作为变量的保存之用。变量在程序语言中扮演了最基本的角色。变量可以用来存放数据,而使用变量之前必须先声明它的数据类型。

2、 解释方法重载的概念,并举例说明。

答: 方法重载指的是多个方法的方法名称相同,但是方法中的参数类型及个数不同。

代码说明:

public static int add(int x, int y) {

}

return x + y;

public static int add(int x, int y, int z) {

}

public static double add(double x, double y) {

}

return x + y;

return x + y + z;

5、编程题

1、 打印出100~1000范围内的所有 “水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

public class TestDemo {

}

程序运行结果:

2、 通过代码完成两个整数内容的交换。

实现一:引用第三方变量

public class TestDemo {

}

程序运行结果:

public static void main(String[] args) {

}

int x = 10;

int y = 20;

int temp = x;

x = y;

y = temp;

n("x = " + x);

n("y = " + y);

实现二:利用数学计算完成

public class TestDemo {

}

x = 20

y = 10

3、 判断某数能否被3,5,7同时整除。

public class TestDemo {

public static void main(String[] args) {

public static void main(String[] args) {

}

int x = 10;

int y = 20;

x += y ;

y = x - y;

x = x - y ;

n("x = " + x);

n("y = " + y);

153、370、371、407、

public static void main(String[] args) {

}

int i, j, k;

for (int x = 100; x < 1000; x++) {

}

i = x / 100;

k = x % 10;

}

// 计算百位数字

// 计算十位数字

// 计算个位数字

j = (x / 10) % 10;

if (x == i * i * i + j * j * j + k * k * k) {

(x + "、");

}

}

int data = 105;

if (data % 3 == 0 && data % 5 == 0 && data % 7 == 0) {

}

n(data + "可以同时被3、5、7整除。");

n(data + "不可以同时被3、5、7整除。");

} else {

程序运行结果: 105可以同时被3、5、7整除。

4、 编写程序,分别利用while循环、do…while循环和for循环求出100~200的累加和。

实现一:使用while循环

public class TestDemo {

}

实现二:使用do…while循环

public class TestDemo {

}

实现三:使用for循环

public class TestDemo {

}

public static void main(String[] args) {

}

int sum = 0;

for (int x = 100; x <= 200; x++) {

}

n("累加结果:" + sum);

sum += x;

public static void main(String[] args) {

}

int sum = 0;

int x = 100;

do {

sum += x;

x++;

public static void main(String[] args) {

}

int sum = 0;

int x = 100;

while (x <= 200) {

}

n("累加结果:" + sum);

sum += x;

x++;

} while (x <= 200);

n("累加结果:" + sum);

第3章、面向对象(基础) —— 自我检测(答案)

1、填空题

1、 面向对象有那三大特征: 封装 、 继承 、 多态 。

2、 类由 属性 和 方法 组成。

3、 new 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会自动调用类中的 构造方法为对象 实例化 。

4、 使用 private 修饰的类成员称为私有成员。私有成员只能在 类 中使用。

5、 构造方法的名称与 类名称 相同。

6、 private 关键字可以让类中的属性和方法对外部不可见。

7、 this关键字可以调用本类中的 属性 、 方法 、 构造方法 ,调用 构造方法 时必须放在 构造方法 的首行。

8、 在Java中数组排序的方法是 () 。

2、选择题

1、 如果希望方法直接通过类名称访问,在定义时要使用的修饰符是 A 。

A、 static B、 final C、 abstract D、 this

2、 如果类中没有定义构造方法,系统会提供一个默认的构造方法。默认构造方法的特点是 C 。

A、 无参数有操作 B、 有参数无操作 C、 即无参数也无任何操作

A、 void Demo(int x){…}

C、 Demo Demo(int x){…}

B、 Demo(int x){…}

D、 int Demo(){}

D、 有参数有操作

3、 有一个类Demo,对与其构造方法的正确声明是 B 。

4、 以下关于面向对象概念的描述中,不正确的一项是 C 。

A、 在现实生活中,对象是指客观世界的实体

B、 程序中的对象就是现实生活中的对象

C、 在程序中,对象是通过一种抽象的数据类型来描述的,这种抽象数据类型称为类(class)

D、 在程序中,对象是一组变量和相关方法的集合

A、 类 B、 对象 C、 方法 D、 安全

5、 下列那一项不属于面向对象程序设计的基本要素? D

6、下列程序的执行结果是 A

public class TestDemo {

}

A、 编译错误 B、 0 C、 1 D、 运行成功,但不输出

public void fun() {

}

public static void main(String args[]) {

}

Demo d = new Demo();

();

static int i = 0;

i++;

n(i);

7、 顺序执行下列程序语句后,则b的值是 C 。

String str = "Hello" ;

String b = ing(0,2) ;

A、 Hello B、 hello C、 He D、 null

3、判断题

1、 没有实例化的对象不能使用。

2、 不可以为类定义多个构造方法。

×

×

×

×

3、 使用static声明的方法可以调用非static声明的方法。

4、 非static声明的方法可以调用static声明的属性或方法。

5、 String对象可以使用==进行内容的比较。

7、 构造方法可以有返回值类型的声明。

6、 垃圾是指无用的内存空间,会被垃圾收集机制回收。

8、 匿名对象是指使用一次的对象,使用之后将等待被垃圾回收。

9、 使用static定义的内部类就成为外部类。

10、 多个实例化对象之间不会互相影响,因为保存在不同的内存区域之中。

4、简答题

1、 String类的操作特点。

答: String类的对象有两种实例化方式:

|- 方式一:直接赋值,只开辟一块堆内存空间,并且对象可以入池;

|- 方式二:构造方法,开辟两块堆内存空间,有一块将称为垃圾,不会自动入池,使用intern()方法手工入池;

|- ==:比较的是两个字符串对象的内存地址数值;

|- equals():字符串内容比较;

String对象的比较方法:

字符串对象一旦声明,则内容不可改变,改变的只能是字符串对象的地址指向。

2、 简述垃圾对象的产生。

答: 垃圾指的是一块无用的引用内存,当将变量设置为null或者长时间不使用时,就将成为垃圾。

3、 static方法如何调用?非static方法如何调用?

答: static方法可以使用类名称或实例化对象调用,而非static方法只能依靠实例化对象才可以调用。

4、 类与对象的关系是什么?如何创建及使用对象?

答: 类规定了对象所具有的属性及行为(方法),类只有通过产生对象才可以分配属性或者是调用方法,对象的创建依靠关键字new创建。

5、 举例说明子类对象的实例化过程。

答: 当通过关键字new实例化子类对象时,会默认调用父类的无参构造方法,为父类对象实例化,而后才会调用子类的构造方法,为子类对象实例化。

7、 简述this与super关键字的区别。

答: this和super都可以调用类中的属性、方法、构造方法,但是this调用的是本类操作,而super是由子类调用父类操作。

5、编程题

1、 编写并测试一个代表地址的Address类,地址信息由:国家,省份,城市,街道,邮编组成,并可以返回完整的地址

信息。

class Address {

}

public class TestDemo {

}

程序运行结果: 国家:中国,省份:北京,城市:北京市,街道:MLDN,邮政编码:100088

2、 定义并测试一个代表员工的Employee类。员工属性包括“编号”、“姓名”、“基本薪水”、“薪水增长额”;还包括 “计算增长后的工资总额”。的操作方法。

class Employee {

private int empno ;

private String ename ;

private double sal ;

private double rate ;

public Employee() {

}

public Employee(int empno, String ename, double sal, double rate) {

super();

= empno;

= ename;

= sal;

= rate;

// 雇员编号

// 雇员姓名

public static void main(String args[]) {

}

Address ad = new Address("中国", "北京", "北京市", "MLDN", "100088");

n(ad);

private String national;

private String provincial;

private String city;

private String street;

private String zipcode;

public Address() {

}

public Address(String national, String provincial, String city,

}

public String toString() {

}

// setter、getter略

return "国家:" + al + ",省份:" + cial + ",城市:"

+ + ",街道:" + + ",邮政编码:" + e;

String street, String zipcode) {

super();

al = national;

cial = provincial;

= city;

= street;

e = zipcode;

// 基本工资

// 工资增长额

}

}

public String toString() {

}

public void growthin() {

}

// setter、getter略

// 增长薪水

= * ;

return "雇员编号:" + + ",雇员姓名:" + + ",基本工资:" + ;

public class TestDemo {

}

程序运行结果: 雇员编号:7369,雇员姓名:SMITH,基本工资:1500.0

3、 编写程序在将字符串“want you to know one thing”,统计出字母“n”和字母“o”的出现次数。

public class TestDemo {

}

程序运行结果:

4

字母n的出现次数:4

设计一个Dog类,有名字、颜色、年龄等属性,定义构造方法来初始化类的这些属性,定义方法输出Dog信息。编public static void main(String args[]) {

}

String str = "want you to know one thing" ;

int sum = 0 ;

while (f("n") != -1) {

}

n("字母n的出现次数:" + sum);

sum ++ ;

// 是否还有字母n

// 数据统计量增加

// 定义字符串

public static void main(String args[]) {

}

Employee emp = new Employee(7369, "SMITH", 1000, 1.5);

in() ; // 工资增长

n(emp);

str = ing(f("n") + 1); // 改变字符串内容

写应用程序使用Dog类。

class Dog {

private String name ;

private String color ;

private int age ;

public Dog() {

}

public Dog(String name, String color, int age) {

}

public String toString() {

return "狗的名字:" + + ",狗的颜色:" + + ",狗的年龄:" + ;

super();

= name;

= color;

= age;

}

}

// setter、getter略

public class TestDemo {

}

程序运行结果:

5、 字符串操作:

· 从字符串“MLDN中心Java技术学习班20130214”中提取开班日期。

public class TestDemo {

}

程序运行结果:

20130214

· 将“MLDN JAVA高端技术培训”字符串中的“Java”替换为“JAVA EE”。

public class TestDemo {

}

程序运行结果:

·

MLDN JAVA EE高端技术培训

取出“Java技术学习班20130214”中的第八个字符。

public static void main(String args[]) {

}

String str = "MLDN JAVA高端技术培训" ;

n(eAll("Java".toUpperCase(), "JAVA EE"));

public static void main(String args[]) {

}

String str = "MLDN中心Java技术学习班20130214" ;

n(ing(f("20130214")));

狗的名字:金毛,狗的颜色:金黄色,狗的年龄:3

public static void main(String args[]) {

}

Dog dog = new Dog("金毛", "金黄色", 3);

n(dog);

public class TestDemo {

}

程序运行结果:

· 清除“Java技术学习班20130214”中的所有‘0’。

public class TestDemo {

}

程序运行结果:

· 从任意给定的身份证号码中提取此人的出生日期。

public class TestDemo {

Java技术学习班213214

public static void main(String args[]) {

}

String str = "Java技术学习班20130214" ;

n(eAll("0", ""));

public static void main(String args[]) {

}

String str = "Java技术学习班20130214" ;

n((8));

}

public static void main(String args[]) {

}

19760919

String str = "1100520" ;

n(ing(6,14));

程序运行结果:

6、 编写一个银行帐户类,类的构成包括:

}

public class TestDemo {

}

程序运行结果:

public static void main(String args[]) {

}

· 数据成员:

|- 用户的帐户名称、用户的帐户余额;

· 方法包括:

|- 开户(设置帐户名称,及余额),利用构造方法完成

· 查询余额

class Account {

private String name ;

private double balance ;

public Account() {

}

public Account(String name, double balance) {

}

public String toString() {

}

public double getBalance() {

}

// setter、getter略

return balance;

return "账户名称:" + + ",余额:" + e;

super();

= name;

e = balance;

Account acc = new Account("张三", 5000.0);

n(acc);

n("账户余额:" + ance());

账户名称:张三,余额:5000.0

账户余额:5000.0

第4章、面向对象(高级) —— 自我检测(答案)

1、填空题

1、 Java中通过 extends 关键字实现继承。

2、 一个类只能继承 一 个父类,但能实现 多个 接口。

3、 Object 类是所有类的父类,该类中判断两个对象是否相等的方法是 public boolean equals(Object oth) ,取得对象完整信息的方法是 public String toString() 。

4、 Integer类是对 int 基本数据类型的封装。Float类是对 float 基本数据类型的封装。Double类是对 double基本数据类型的封装。字符类Character是对 char 基本数据类型的封装。

5、 当子类中定义的方法与父类方法同名且参数类型及个数、返回值类型相同时,称子类方法 覆写 父类方法,子类默认使用 本类已经覆写 方法,使用父类的同名方法,必须使用 super 关键字说明。

6、 当子类定义的成员变量与父类的成员变量同名时,称子类 覆盖 父类的成员变量,子类默认使用 本类 属性。使用父类的同名成员变量,必须用 super 关键字说明。

7、 如果子类定义了构造方法,在创建子类对象时首先默认调用 父类无参构造方法 ,然后再本类的构造方法。

2、选择题

1、 不能直接使用new创建对象的类是 B 。

A、 静态类 B、 抽象类 C、 最终类 D、 公有类

2、 为类定义多个名称相同、但参数的类型或个数不同的方法的做法称为 B 。

A、 方法重载

A、 extends

B、 方法覆写

B、 class

C、 方法继承

D、 方法重用

D、 public

3、 定义接口的关键字是 C 。

C、 interface

4、 现在有两个类A、B,以下描述中表示B继承自A的是 D 。

A、 class A extends B

C、 class A implements

B、 class B implements A

D、 class B extends A

5、 下面关于子类调用父类构造方法的描述正确的是 C 。

A、 子类定义了自己的构造方法,就不会调用父类的构造方法。

B、 子类必须通过super关键字调用父类有参的构造方法。

C、 如果子类的构造方法没有通过super调用父类的构造方法,那么子类会先调用父类中无参构造方法,之后再调D、 创建子类对象时,先调用子类自己的构造方法,让后再调用父类的构造方法。

A、 X x = new X() ;

C、 Y x = new Y() ;

public class A {

public static void main(String args[]) {

}

void test() {

B b = new B();

();

B、 X x = new Y() ;

D、 Y x = new X() ;

用子类自己的构造方法。

6、 假设类X是类Y的父类,下列声明对象x的语句中不正确的是 D 。

7、 编译并运行下面的程序,结果 B 。

}

}

("A");

class B extends A {

}

A、 产生编译错误 B、 代码可以编译运行,并输出结果:AB

D、 编译没有错误,但会运行时会产生异常 C、 代码可以编译运行,但没有输出

public class A {

}

class B extends A {

}

A、 产生编译错误,因为类B覆盖类A的方法test()时,降低了其访问控制的级别。

B、 代码可以编译运行,并输出结果:AB

C、 代码可以编译运行,但没有输出

D、 代码可以编译运行,并输出结果:A

A、 final

A、 final

B、 abstract

B、 abstract

C、 static

D、 static

D、 interface

D、 interface

void test() {

}

();

n("B");

public static void main(String args[]) {

}

public void test() {

}

("A");

B b = new B();

();

void test() {

}

();

n("B");

8、 编译运行下面的程序,结果是 A 。

9、 下面 B 修饰符所定义的方法必须被子类所覆写。

10、 下面 A 修饰符所定义的方法不能被子类所覆写。

11、下面的程序编译运行的结果是 A

public class A implements B {

}

interface B {

public static void main(String args[]) {

}

int m, n;

A a = new A();

m = a.K;

n = B.K;

n(m + "," + n);

}

int K = 5;

A、 5,5 B、 0,5 C、 0,0 D、 编译程序产生编译结果

12、 下面关于接口的说法中不正确的是 C 。

A、 接口所有的方法都是抽象的

B、 接口所有的方法一定都是public类型

C、 用于定义接口的关键字是implements

D、 接口是Java中的特殊类,包含全局常量和抽象方法

A、 abstract和final能同时修饰一个类

B、 抽象类不光可以做父类,也可以做子类

C、 抽象方法不一定声明在抽象类中,也可以在接口中

D、 声明为final的方法不能在子类中覆写

13、 下面关于Java的说法不正确的是 A

3、判断题

1、 final声明的类可以有子类。

×

×

×

×

2、 一个类继承了抽象类,则抽象类中的抽象方法需要在其子类中覆写。

3、 final类型的变量是常量,其内容不可改变。

4、 一个类不能即是子类又是父类。

5、 子类只能继承父类的成员,但不能修改父类成员。

6、 Java语言只支持单继承,不支持多继承。

7、 子类可以继承父类的所有成员。

8、 一个接口可以继承一个抽象类。

9、 一个接口可以同时继承多个接口。

10、在程序中this和super调用构造方法时可以同时出现。

4、简答题

1、 简述this与super关键字的区别。

答: this和super都可以调用类中的属性、方法、构造方法,但是this调用的是本类操作,而super是由子类调用父类操作。

2、 简述方法的重载与覆写的区别。

答: 方法重载是发生在一个类之中,方法名称相同、参数的类型及个数不同,不受权限的限制。而覆写是发生在继承关系之中,子类定义了和父类定义了方法名称相同、参数类型及个数、返回值类型完全相同的方法时所发生的操作,在子类覆写父类方法时,被覆写的方法不能拥有比父类更严格的访问权限。

3、 在已有类的基础上派生新的类有什么好处?

答: 扩充已有类的功能,并且利用方法的覆写扩充已有方法的功能。

4、 如何区分子类和父类?子类可以继承父类的那些内容?

答: 子类使用extends继承父类或使用implements实现多个接口,子类可以继承父类中的全部内容,但是对于私有操作属于隐式继承,而非私有操作属于显式继承。

5、 什么是多态?实现都态的方法有那些?

答: 多态是面向对象的最后一个主要特征,它本身主要分为两个方面:

· 方法的多态性:重载与覆写

|- 重载:同一个方法名称,根据不同的参数类型及个数可以完成不同的功能;

|- 覆写:同一个方法,根据操作的子类不同,所完成的功能也不同。

· 对象的多态性:父子类对象的转换。

|- 向上转型:子类对象变为父类对象,格式:父类 父类对象 = 子类实例,自动;

|- 向下转型:父类对象变为子类对象,格式:子类 子类对象 = (子类) 父类实例,强制;

6、 接口有那些特征?如何定义和实现接口。

答: 接口之中全部由全局常量及抽象方法所组成,一个类可以同时实现多个接口,在Java中使用interface定义接口,子类使用implements实现接口。

7、 接口和抽象类有那些区别?

答: 抽象类及接口区别如下。

No.

1

2

3

4

5

6

7

区别

定义关键字

组成

权限

关系

使用

设计模式

局限

抽象类

abstract class

常量、变量、抽象方法、普通方法、构造方法

可以使用各种权限

一个抽象类可以实现多个接口

子类使用extends继承抽象类

接口

interface

全局常量、抽象方法

只能是public

接口不能够继承抽象类,却可以继承多接口

子类使用implements实现接口

抽象类和接口的对象都是利用对象多态性的向上转型,进行接口或抽象类的实例化操作

模板设计模式

一个子类只能够继承一个抽象类

工厂设计模式、代理设计模式

一个子类可以实现多个接口

8、 简述基本数据类型的自动装箱及自动拆箱操作。

答: 在JDK 1.5之后,基本数据类型可以采用直接赋值的方式为包装类进行对象的实例化操作,而包装类的对象也可以通过直接赋值的方式变回基本数据类型。

5、编程题

1、 定义一个ClassName接口,接口中只有一个抽象方法getClassName()。设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称。编写应用程序使用Company类。

interface ClassName {

}

class Company implements ClassName {

}

public class TestDemo {

}

程序运行结果:

Company

2、 建立一个人类(Person)和学生类(Student)功能要求:

A、 Person中包含4个保护型的数据成员name、address、sex、age分别为字符串,字符串,字符及整型。表示:姓名、地址、性别和年龄。一个四参构造方法,一个无参构造方法,及一个输出方法用于显示四种属性。

B、 Student继承Person,并增加输出成员math、english存放数学和英语成绩。一个六参构造方法,一个两参构造方法,一个无参构造方法,重写输出方法用于显示全部六种种属性.

public static void main(String args[]) {

}

ClassName name = new Company() ;

n(ssName());

public String getClassName() {

}

return "Company";

public String getClassName() ;

class Person {

}

class Student extends Person {

}

public class TestDemo {

}

程序运行结果: 姓名:张三,地址:北京西城区甲11号德外大街德胜科技园美江大厦 A座 - 6层,性别:男,年龄:25,数学成绩:90.0,英语成绩:99.0

public static void main(String args[]) {

}

Student stu = new Student("张三", "北京西城区甲11号德外大街德胜科技园美江大厦 A座 - 6层", 'n(stu);

private double math ;

private double english ;

public Student() {

}

public Student(String name, String address, char sex, int age, double math,

}

public String toString() {

}

// setter、getter略

return ng() + ",数学成绩:" + + ",英语成绩:" + h;

double english) {

super(name, address, sex, age);

= math;

h = english;

private String name ;

private String address ;

private char sex ;

private int age ;

public Person() {

}

public Person(String name, String address, char sex, int age) {

}

public String toString() {

}

// setter、getter略

return "姓名:" + + ",地址:" + s + ",性别:" +

+ ",年龄:" + ;

super();

= name;

s = address;

= sex;

= age;

男', 25, 90.0, 99.0);

3、 定义员工类,具有姓名,年龄,性别属性,并具有构造方法,显示数据方法,定义管理层类,继承员工类,并有自己的属性:职务,年薪。定义职员类,继承员工类,并有自己的属性:所属部门,月薪。

class Employee {

}

class Manager extends Employee {

}

class Staff extends Employee {

private String dept ;

private double salary ;

public Staff() {

}

public Staff(String name, int age, char sex, String dept, double salary) {

}

public String toString() {

return ng() + ",部门:" + + ",月薪:" + ;

super(name, age, sex);

= dept;

= salary;

private String job ;

private double income ;

public Manager() {

}

public Manager(String name, int age, char sex, String job, double income) {

}

public String toString() {

}

// setter、getter略

return ng() + ",职位:" + + ",年薪:" + ;

super(name, age, sex);

= job;

= income;

private String name ;

private int age ;

private char sex ;

public Employee() {

}

public Employee(String name, int age, char sex) {

}

public String toString() {

}

// setter、getter略

return "雇员姓名:" + + ",年龄:" + + ",性别:" + ;

super();

= name;

= age;

= sex;

}

}

// setter、getter略

public class TestDemo {

}

程序运行结果: 雇员姓名:张三,年龄:30,性别:男,职位:总监,年薪:200000.0

雇员姓名:李四,年龄:25,性别:女,部门:业务部,月薪:1500.0

4、 定义类Shape表示一般二维图形。Shape具有抽象方法area和perimeter,分别计算形状的面积和周长。试定义一些二维形状类(如矩形、三角形、圆形等),这些类均为Shape类的子类。

abstract class Shape {

}

class Rectangle extends Shape {

}

class Triangle extends Shape {

private double edgea ;

private double edgeb ;

private double edgec ;

public Triangle() {

}

public Triangle(double edgea, double edgeb, double edgec) {

super();

= edgea;

// 三角形

// 边长

// 边长

// 边长

private double wide ;

private double longs ;

public Rectangle() {

}

public Rectangle(double wide, double longs) {

}

public double area() {

}

public double perimeter() {

}

return ( + ) * 2;

return * ;

super();

= wide;

= longs;

// 矩形

// 长

// 宽

public abstract double area();

public abstract double perimeter();

public static void main(String args[]) {

}

Employee ea = new Manager("张三", 30, '男', "总监", 200000.0);

Employee eb = new Staff("李四", 25, '女', "业务部", 1500.0);

n(ea);

n(eb);

}

}

= edgeb;

= edgec;

public double area() {

}

public double perimeter() {

}

// 圆形

// 半径

return + + ;

return * / 2 ;

class Round extends Shape {

}

public class TestDemo {

}

程序运行结果:

private double radius ;

public Round() {

}

public Round(double radius) {

}

public double area() {

}

public double perimeter() {

}

return * 2 * ;

return * * ;

super();

= radius;

public static void main(String args[]) {

}

矩形面积:216.3,矩形周长:62.2

三角形面积:102.99,三角形周长:60.599999999999994

圆形面积:2884.2647993342534,圆形周长:190.38

Shape rectangle = new Rectangle(10.5, 20.6);

Shape triangle = new Triangle(10.1, 20.2, 30.3);

Shape round = new Round(30.3) ;

n("矩形面积:" + () + ",矩形周长:" + ter());

n("三角形面积:" + () + ",三角形周长:" +

n("圆形面积:" + () + ",圆形周长:" + ter());

ter());

第5章、包及访问控制权限 —— 自我检测(答案)

1、填空题

1、 package 关键字可以定义一个包, import 关键字可以导入包。

2、 Java中存在四种访问权限: private 、 default 、 protected 、 public 。

3、 Java中可以使用 import static 包.类.* 导入一个类的全部静态方法。

4、 jar 命令可以将全部的class打成一个压缩包。

5、 Java中 包是自动导入的。

2、选择题

1、 String和Object类在 A 包中定义的。

A、 B、 C、 D、

2、 C 权限是同一包可以访问,不同包的子类可以访问,不同包的非子类不可以访问。

A、 private B、 default C、 protected D、 public

3、 下列说法正确的一项是 C 。

A、 r是接口

B、 String定义在包中

C、 Double类在包中

D、 Double类在包中

4、 下列关于包、类和源文件的描述中,不正确的一项是 C 。

A、 一个包可以包含多个类

B、 一个源文件中,只能有一个public class

C、 属于同一个包的类在默认情况不可以互相访问,必须使用import导入

D、 系统不会为源文件创建默认的包

5、 定义类时不可能用到的关键字是 C 。

A、 final B、 public C、 protected D、 static

3、判断题

1、 包必须由用户手工导入,否则无法使用。

2、 定义包后类的完整名称是:包.类名称。

4、简答题

1、 简述包的作用及使用。

答: 使用包可以将功能近似的类统一管理,同时可以避免项目之中同名类名称冲突问题;

2、 简述Java的四种访问权限的区别。

答: Java一共有四种访问控制权限:

· private:只可以在一个类中访问,其他类不允许访问;

· default:可以在一个包中访问,但是不同包不允许访问;

× ) √ )((

· protected:可以在同一个包中和不同包的子类所访问,其他包的类不允许访问;

· public:可以被所有包的类所访问。

class Singleton {

}

public class TestDemo {

}

程序运行结果:

Hello World .

public static void main(String args[]) {

}

Singleton inst = null;

();

// 声明对象

// 利用“类.static方法()”取得实例化对象

// 调用方法

// 定义一个类

// 构造方法私有化

3、 编写一个单例设计模式,并简要说明其特点:

private final static Singleton instance = new Singleton() ;

private Singleton() {

}

public void print() {

}

public static Singleton getInstance() {

}

return instance;

// 取得本类对象

n("Hello World .");

inst = tance();

构造方法被私有化,只能够通过getInstance()方法取得Singleton类的实例化对象,这样不管外部如何操作,最终也只有一个实例化对象,在单例设计模式之中,一定会存在一个static方法,用于取得本类的实例化对象。

第6章、异常的捕获及处理 —— 自我检测(答案)

1、填空题

1、 Throwable下有那两个子类: Error 、 Exception 。

2、 ArthmeticException类表示 算术 异常,ArraysIndexOutOfBoundsException表示 数组越界 异常。

3、 一个try代码后面必须跟着若干个 catch 代码段或者一个 finally 代码段。

4、 如果一个方法使用了 throws ,则编译器会强制在使用此方法时进行异常的处理。

5、 异常处理中使用 finally 作为异常的统一出口。

2、选择题

1、 使用那个关键字可以在程序中手工抛出异常 B 。

A、 throws

A、 throws

A、 try块

B、 throw

B、 assert

B、 catch块

C、 assert

C、 class

D、 class

D、 interface

D、 finally块

2、 下面 A 关键字可以用在方法的声明处?

3、 为了捕获一个异常,代码必须放在下面 A 语句块中。

C、 throws块

4、 下面关于try块的说法正确的是 C 。

A、 try块后至少应有一个catch块 B、 try块后必须有finally块

D、 对抛出的异常的处理应放在try块中 C、 可能抛出异常的方法应放在try块中

A、 总是被执行

5、 finally块中的代码将 A 。

B、 如果try块后面没有catch块时,finally块中的代码才会执行

C、 异常发生时才被执行

D、 异常没有发生时才执行

A、 整个程序

B、 只终止抛出异常的方法

D、 上面的说法都不对

D、 RuntimeException

6、 一个异常将终止 A 。

C、 产生异常的try块

A、 Error

7、 所有异常的共同父类是 B 。

B、 Exception C、 Throwable

3、判断题

1、 一个try语句后有多个catch时,捕获范围大的异常要放在捕获范围小的异常之后。 (

2、 finally语句可以根据需要有选择的添加。 (

4、简答题

1、 简述RuntimeException和Exception的区别。

答: 异常(Exception)表示程序运行过程中可能出现的非正常状态,运行时异常(RuntimeException)表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常,即:Exception定义了必须处理的异常,而RuntimeException定义的异常可以选择性的进行处理。

RuntimeException是Exception的子类;

2、 try、catch、finally三种语句的功能是什么?

答: try语句负责捕获程序之中产生的异常;

catch负责匹配异常类型,并且对指定的异常进行处理;

finally作为异常处理的统一出口,不管是否发生异常,都会执行本程序。

3、 简述Java中的异常处理机制。

答: (1)、如果程序之中产生了异常,那么会自动的由JVM根据异常的类型,实例化一个指定异常类的对象;

(2)、如果这个时候程序之中没有任何的异常处理操作,则这个异常类的实例化对象将交给JVM进行处理,而JVM的默认处理方式就是进行异常信息的输出,而后中断程序执行;

(3)、如果程序之中存在了异常处理,则会由try语句捕获产生的异常类对象;

(4)、与try之后的每一个catch进行匹配,如果匹配成功,则使用指定的catch进行处理,如果没有匹配成功,则向后面的catch继续匹配,如果没有任何的catch匹配成功,则这个时候将交给JVM执行默认处理;

(5)、不管是否有异常都会执行finally程序,如果此时没有异常,执行完finally,则会继续执行程序之中的其他代码,如果此时有异常没有能够处理(没有一个catch可以满足),那么也会执行finally,但是执行完finally之后,将默认交给JVM进行异常的信息输出,并且程序中断;

4、 简述Error和Exception的区别。

答: Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;

Exception:指的是程序之中出现的错误信息,可以进行异常处理,主要关心Exception。

5、 列举三个常见的RuntimeException子类。

答: NumberFormatException、ClassCastException、NullPointerException

5、编程题

1、 编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberFormatException异常和ArithmeticException异常。

class MyMath {

}

public class TestDemo {

}

public static void main(String args[]) {

}

if ( != 2) {

}

try {

}

MyMath mm = new MyMath() ;

n((args[0], args[1])); // 被调用处处理异常

tackTrace();

n("程序运行出错!");

(1) ; // 程序退出

public int div(String x, String y) throws NumberFormatException,

}

ArithmeticException { // 出现异常要交给被调用处出

int result = 0;

try {

}

return result;

int numa = nt(x) ;

int numb = nt(y) ;

result = numa / numb;

throw e;

// 除法计算

// 向上抛

} catch (Exception e) {

} catch (Exception e) {

第8章、Java新特性 —— 自我检测(答案)

1、填空题

1、 在使用泛型类时,没有指定泛型的类型,则编译会出现 不安全的警告 信息,程序在使用时会使用 Object 类型进行接收。

2、 通过 ? extends 类 指定泛型的上限,通过 ? super 类 指定泛型的下限。

3、 使用 ? 通配符可以接收全部的泛型类型实例,但却不可修改泛型属性内容。

4、 Java中通过 enum 关键字定义一个枚举,使用此关键字实际上就相当于一个类继承 。

5、 枚举中通过 values() 方法取得枚举的全部内容。

6、 Java提供的三个内建的Annotation是: @Override 、 @Deprecated 、 @SuppressWarnings 。

7、 从JDK 1.8之中,接口内可以定义有三类方法: 抽象方法 、 default定义的普通方法 、 static定义的静态方法。

8、 在Java中一共提供有四个函数式接口,分别为:Funcation、Consumer、Supplier、Predicate;

2、判断题

1、 在枚举类中可以定义抽象方法,而抽象方法只需要实现一次即可。

3、 枚举中定义的构造方法可以使用public权限声明。

4、 作为函数式接口里面可以定义任意多个抽象方法。

×

×

×

2、 枚举中可以定义构造方法,但要求每个枚举对象都必须调用此构造方法。

3、简答题

1、 简述泛型的作用

答: 泛型的主要作用是解决对象向下转型所带来的ClassCastException,使用泛型之后,类之中的属性或方法中的参数类型就由调用处来决定,而如果调用处不设置泛型,为了保证程序不出错,则会使用Object类型进行定义。

2、 简述枚举的作用及实现特点。

答: 枚举定义出了一个类所能使用的若干几个实例化对象,枚举可以直接采用“枚举类型.对象”的方式取得类中的实例化对象进行操作。

3、 简述JAVA SE中三个内建的Annotation的作用。

答: 在JAVA SE之中定义了三种Annotation:

· @Override:准确的方法覆写;

· @Deprecated:某个结构(类、方法、属性)不再建议被用户所使用;

· @SuppressWarnings:压制编译时所产生的警告信息。

4、编程题

1、 定义一个品牌电脑的枚举类,里面只有固定的几个电脑品牌,例如:Lenovo、HP、Dell、Apple、Acer。

enum ComputerBrand {

}

LENOVO("联想"), HP("惠普"), DELL("戴尔"), APPLE("苹果"), ACER("宏基");

private String title;

private ComputerBrand(String title) {

}

@Override

public String toString() {

}

return ;

= title;

第9章、多线程 —— 自我检测(答案)

1、填空题

1、 Java多线程可以依靠 继承Thread类 、 实现Runnable接口 、 实现Callable接口 三种方式实现。

2、 多个线程操作同一资源的时候需要注意 同步 ,依靠 synchronized 关键字实现,实现手段是: 同步代码块 和 同步方法 ,过多的使用,则会出现 死锁 问题。

3、 Java程序运行时,至少启动 两个 个线程,分别是: main线程 和 gc线程 。

4、 main线程的优先级是 中等优先级 。

5、 线程在生命周期中要经历五种状态,分别是 创建 状态、 就绪 状态、 运行 状态、 堵塞 状态、销毁 状态。

6、 Object类提供的 wait() 、 notify() 、 notifyAll() 三个方法可以控制线程。

2、选择题

1、 线程的启动方法是 B 。

A、 run() B、 start()

C、 begin()

D、 accept()

2、 Thread类提供表示线程优先级的静态常量,代表普通优先级的静态常量是 D 。

A、 MAX_PRIORITY B、 MIN_PRIORITY

D、 NORM_PRIORITY

C、 getName()

D、 全部都是

D、 static

D、 setName()

C、 NORMAL_PRIORITY

A、 setPriority()

A、 stop()

A、 serialize

3、 设置线程优先级的方法是 A 。

B、 getPriority()

4、 Thread类的 D 方法是不建议使用的?

B、 suspend()

C、 resume()

5、 下列 C 关键字通常用赖对对象加锁,从而似的对对象的访问是排他的。

B、 transient C、 synchronized

3、判断题

1、 Java中直接调用Thread类中的run()方法可以启动一个线程。

2、 进程是在线程的基础之上的进一步划分。

3、 Java是多线程的编程语言。

×

) 4、 不管使用Callable还是Runnable接口实现的多线程最终都需要通过Thread类启动。

4、简答题

1、 简述线程两种实现方式及区别?

答: 多线程的两种实现方式都需要一个线程的主类,而这个类可以实现Runnable接口或继承Thread类,不管使用何种方式都必须在子类之中覆写run()方法,此方法为线程的主方法;

念。

2、 简述死锁的产生。

Thread类是Runnable接口的子类,而且使用Runnable接口可以避免单继承局限,以及更加方便的实现数据共享的概

答: 当多个线程访问某一共享资源时,为保证数据的正确性,需要使用同步进行控制,线程同步指的是某一线程要等待其他线程对象操作完成之后才可以进行操作,但是在程序之中过多的线程等待就会出现死锁。

5、编程题

1、 设计四个线程对象,两个线程执行减操作,两个线程执行加操作。

class Message {

}

private int data = 10 ;

private boolean flag = true;

public synchronized void add() {

}

public synchronized void subtract() {

}

// setter、getter略

if ( == true) {

}

try {

}

n("减法操作:" + --);

= true;

();

// 已经取走了,可以继续生产

// 唤醒等待线程

(100);

tackTrace();

} catch (InterruptedException e) {

try {

}

(); // 等待

} catch (InterruptedException e) {

tackTrace();

// 减法操作

// 未生产,不能取走

if ( == false) {

}

try {

}

n("加法操作:" + ++);

= false;

();

// 已经生产完成,修改标志位

// 唤醒等待线程

(200);

tackTrace();

} catch (InterruptedException e) {

try {

}

(); // 等待

} catch (InterruptedException e) {

tackTrace();

// 加法操作

// 已经生产过了,不能生产

// 初始值

class Addition implements Runnable {

}

class Subtraction implements Runnable {

}

public class TestDemo {

}

private Message msg = null ;

public Subtraction (Message msg) {

}

@Override

public void run() {

}

for (int x = 0; x < 50; x++) {

}

ct() ;

= msg ;

private Message msg = null ;

public Addition(Message msg) {

}

@Override

public void run() {

}

for (int x = 0; x < 50; x++) {

}

() ;

= msg ;

// 定义生产者

// 加法执行50次

// 加法操作

// 定义消费者

// 减法执行50次

// 执行减法

public static void main(String args[]) {

}

Message msg = new Message();

new Thread(new Addition(msg), "加法对象A").start();

new Thread(new Addition(msg), "家访对象B").start();

// 启动线程

// 启动者线程

new Thread(new Subtraction(msg), "减法对象A").start(); // 取得线程

new Thread(new Subtraction(msg), "减法对象B").start(); // 取得线程

第10章、常用类库 —— 自我检测(答案)

1、填空题

1、 在包中提供了两个字符串类,分别是 String 和 StringBuffer。这两个类都是 CharSequence 接口的子类,字符串类提供的求字符串长度的方法是 public int length() 。

2、 Java中提供的两个大数操作类是: BigInteger 和 BigDecimal 。

3、 对象克隆方法是 Object 类提供的,方法名称是 public Object clone () thorws CloneNotSupportException ,对象所在的类必须实现 ble 接口。

4、 String类的 matches() 、 split() 、 replaceAll() 、 replaceFirst() 四个方法可以使用正则。

5、 通过Object类中的 public Class getClass() 方法可以取得一个类的Class对象。

6、 Constructor类定义在 t 包中。

7、 Class类对象的三种实例化方式: getClass()方法 、 类.class 、 forName(className) 方法 。

2、选择题

1、 使用Runtime类的 D 方法,可以释放垃圾内存。

A、 exec() B、 run() C、 invoke()

C、 clone()

C、 clone()

D、 gc()

D、 finalize()

D、 finalize()

2、 Object类中的 B 方法不能被覆写?

A、 toString()

A、 toString()

B、 getClass()

B、 getClass()

3、 如果要为对象回收做收尾操作,则应该覆写Object类中的 D 方法。

3、判断题

1、 任何类的对象数组都可以使用()方法进行排序操作。

2、 Random类存放在包中。

3、 Runtime类的对象可以直接通过构造方法实例化。

×

×

×

4、 Class类的对象可以通过关键字new进行实例化操作。

5、 可以通过Class实例化一个类的对象,但是要求此类必须存在无参构造。

4、简答题

1、 String类和StringBuffer类的区别是什么?StringBuffer类提供了那些独特的方法?

答: String类的内容一旦声明则不可修改,而StringBuffer类的内容定义之后可以修改。StringBuffer类使用append()方法可以完成字符串的连接操作,而String类使用“+”完成;

特殊方法:insert()、reverse()、replace()。

2、 简述final、finally、finalize的区别及作用?

答: final表示终结器,用于定义不能被继承的父类,不能被覆写的方法,常量;

finally是异常处理的出口;

finalize()是Object类定义的一个方法,用于执行对象回收前的收尾操作。

3、 解释Comparable和Comparator的区别。

答: able是在一个类定义的时候默认实现好的接口,里面只有一个compareTo()方法;

ator是需要单独定义一个比较的规则类,里面有两个方法;compare()、equals()。

5、编程题

1、 定义一个StringBuffer类对象,然后通过append()方法向对象里添加26个小写字母,要求每次只添加一次,共添加26次。

public class TestDemo {

public static void main(String args[]) {

StringBuffer buf = new StringBuffer() ;

for (char c = 'a' ; c <='z' ; c++){

}

}

}

(c) ; // 连接字符串

n(buf);

程序运行结果:

abcdefghijklmnopqrstuvwxyz

2、 利用Random类产生5个1~30之间(包括1和30)的随机整数。

import ;

public class TestDemo {

}

程序运行结果 23、2、20、0、30、

3、 输入一个email地址,之后使用正则表达式验证该email地址是否正确。

package ;

public class TestDemo {

}

程序运行结果: TRUE,EMAIL输入合法。

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

}

String str = "mldnqa@";

String regex = "[a-zA-Z_][a-zA-Z_0-9.]*@[a-zA-Z_0-9.]+.(com|cn|net)";

if (s(regex)) {

}

} else {

n("FLASE,EMAIL输入非法!");

// 符合于验证要求

public static void main(String args[]) {

}

Random rand = new Random();

for (int x = 0; x < 5; x++) {

}

(t(31) + "、");

n("TRUE,EMAIL输入合法。");

4、 编写正则表达式,判断给定的是否是一个合法的ip地址。

public class TestDemo {

}

程序运行结果: TRUE,IP地址输入合法。

5、 编写程序,将字符串“1981-09-19 09:07:27.727”变为Date型数据。

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

}

String str = "192.168.1.3";

String regex = "d{1,3}.d{1,3}.d{1,3}.d{1,3}";

if (s(regex)) {

}

} else {

n("FLASE,IP地址输入非法!");

// 符合于验证要求

n("TRUE,IP地址输入合法。");

import DateFormat;

import ;

public class TestDemo {

}

程序运行结果:

Sat Sep 19 09:07:27 CST 1981

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

}

String str = "1981-09-19 09:07:27.727";

Date date = (str);

n(date);

// 字符串

// 将字符串变为日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:");

第11章、Java IO操作 —— 自我检测(答案)

1、填空题

1、 IO操作的所有类都保存在 包中。

2、 文件输入流是 FileInputStream、FileReader 、文件输出流 FileOutputStream、FileWriter 。

3、 IO操作中字节流的操作类是 InputStream 、 OutputStream ,字符流的操作类是 Reader 和 Writer 。

4、 System类中提供那个三个常量是对IO有所支持的: out 、 err 、 in 。

5、 序列化对象使用 ObjectOutputStream 、 ObjectInputStream 类,对象所在的类必须实现 Serializable 接口,才可以自动序列化所有的内容。

6、 transient 关键字可以让类中的属性不被序列化下来。

2、选择题

1、 File类提供了许多管理磁盘的方法。其中,建立目录的方法是 B 。

A、 delete()

B、 mkdirs()

B、 System

C、 makedir()

C、 InputStream

D、 exists()

D、 DataOutputStream

2、 提供println()方法和print()方法的类是 A 。

A、 PrintStream

3、 不同的操作系统使用不同的路径分隔符。静态常量separator表示路径分隔符,它属于的类是 C 。

A、 FileInputStream B、 FileOutputStream C、 File D、 InputStream

4、 下面的说法不正确的是 D 。

A、 InputStream与OutputStream类通常是用来处理字节流,也就是二进制文件

B、 Reader与Writer类则是用来处理字符流,也就是纯文本文件

C、 Java中IO流的处理通常分为输入和输出两个部分

D、 File类是输入/输出流类的子类

A、 InputStream与OutputStream都是抽象类

B、 Reader与Writer不是抽象类

C、 RandomAccessFile是抽象类

D、 File类是抽象类

A、 B、 C、 D、 ()

5、 下面的说法正确的是 A 。

6、 与InputStream相对应的Java系统的标准输入对象是 A 。

7、 FileOutputStream类的父类是 C 。

A、 File B、 FileOutput

C、 OutputStream

C、 压缩

D、 InputStream

D、 将字节流变为字符流

8、 InputStreamReader类提供的功能是 D 。

A、 数据校验 B、 文本行计数

3、判断题

1、 字节流操作时使用到了缓冲区,字符流操作时没有使用到缓冲区。

2、 File类用于管理本地磁盘的文件和目录。

3、 通过read()方法可以从字节输入流读出各种类型的数据。

×

4、简答题

1、 简述字节流与字符流操作的区别。

答: 字节流没有使用到缓冲区,而字符流使用了;

处理各种数据都可以通过字节流完成,而在处理中文的时候使用字符流会更好。

2、 简述对象序列化的主要作用。

答: 对象序列化主要是指将内存之中保存的对象以二进制数据流的方式进行传输,要实现序列化的对象所在类必须实现azable接口。

5、编程题

1、 编写Java程序,输入3个整数,并求出三个整数的最大值、最小值。

import r;

public class TestDemo {

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

Scanner scan = new Scanner();

int data[] = new int[3]; // 接收三个输入数据

for (int x = 0; x < ;) {

}

int max = data[0] ; // 假设第1个数据为最大值

int min = data[0] ; // 假设第1个数据为最小值

for (int x = 1; x < ; x++) {

if (min > data[x]) {

}

if (max < data[x]) {

}

max = data[x] ;

min = data[x];

("请输入第" + (x + 1) + "个数字:");

if (tInt()) { // 输入的是数字

}

data[x] = t(); // 接收数字

x ++ ;

}

}

}

n("最大值:" + max);

n("最小值:" + min);

程序运行结果: 请输入第1个数字:10

请输入第2个数字:20

请输入第3个数字:30

最大值:30

最小值:10

2、 从键盘输入文件的内容和要保存的文件名称,之后根据输入的名称创建文件,并将内容保存到文件之中。

import ;

import tputStream;

import tream;

import r;

public class TestDemo {

}

程序运行结果: 请输入文件名称:d:

请输入文件内容:,北京魔乐科技软件学院!

3、 编写程序,程序运行后,根据屏幕提示输入一个数字字符串,输入后统计有多少个偶数数字和奇数数字。

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

}

Scanner scan = new Scanner();

String fileName = null ;

// 保存文件名称

// 保存文件内容

// 提示信息

String fileContent = null ;

imiter("n") ;

if (t()) {

}

("请输入文件名称:");

// 设置分隔符

// 有输入内容

// 接收数据 fileName = ().trim() ;

if (t()) {

}

("请输入文件内容:");

fileContent = ().trim() ;

File file = new File(fileName) ;

if (!entFile().exists()) { // 文件目录不存在

}

PrintStream out = new PrintStream(new FileOutputStream(file));

(fileContent) ;

() ;

entFile().mkdirs() ; // 创建目录

// 接收数据

import ;

import r;

public class TestDemo {

}

程序运行结果: 请输入一串数字:123456789

奇数个数:5

偶数个数:4

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

}

Scanner scan = new Scanner();

imiter("n") ;

String data = null ;

boolean flag = true ;

while(flag) {

}

int oddCount = 0 ;

// 奇数个数

// 偶数个数

// 逐个拆分

int evenCount = 0 ;

("请输入一串数字:");

if (t()) {

}

data = ().trim() ; // 接收数据

if (s("d+")) { // 由数字所组成

}

flag = false ; // 循环结束

} else {

n("输入数据不是数字,请重新输入!");

// 接收数据

// 循环标记

String result [] = ("") ;

}

for (int x = 1 ; x < ; x ++) {

int temp = nt(result[x]) ; // 取得每一个数字

if (temp % 2 == 0) {

}

evenCount ++ ;

oddCount ++ ;

} else {

// 是偶数

n("奇数个数:" + oddCount);

n("偶数个数:" + evenCount);

第12章、Java网络编程 —— 自我检测(答案)

1、选择题

1、 Socket的工作流程是: C 。

①、打开连接到Socket的输入/输出

②、按照某个协议对Socket进行的读/写操作

③、创建Socket

④、关闭Socket

A、 ①③②④ B、 ②①③④ C、③①②④ D、 ①②③④

2、判断题

1、 包为网络通讯包。

) 2、 ServerSocket类和Socket类主要完成TCP程序设计。

第13章、Java类集框架 —— 自我检测(答案)

1、填空题

1、 在类集中存放单值的最大父接口是 Collection ,存放一对值的最大父接口是 Map 。

2、 Set 接口保存的数据是不允许重复的,并且 TreeSet 子类是可以排序的,根据 Comparable接口 排序。

3、 Java类集可以使用的输出方式是: Iterator 、 ListIterator 、 Enumeration 、 foreach 。

4、 在Java中实现栈操作的类是 Stack 。

2、选择题

1、 下面那个类不是Collection的子类 C 。

A、 ArrayList B、 Vector C、 HashMap D、 TreeSet

2、 HashSet子类依靠 C 方法区分重复元素。

A、 toString()、equals() B、 clone()、equals() C、 hashCode()、equals() D、 getClass()、clone()

3、判断题

1、 List接口中的内容是不能重复的。

2、 TreeSet是排序类。

×

3、 Set接口的内容可以使用Enumeration接口进行输出。

4、 Map接口的内容可以使用ListIterator接口进行输出。

4、简答题

1、 简述ArrayList和Vector的区别。

答:

No.

1

2

3

区别

推出时间

性能

安全性

ArrayList

JDK 1.2

采用异步处理方式,性能更高

非线程安全

Vector

JDK 1.0

采用同步处理方式,性能相对较低

线程安全

4

答:

No.

1

2

3

4

输出 Iterator、ListIterator、foreach Iterator、ListIterator、foreach、Enumeration

2、 简述HashMap及Hashtable的区别。

区别

推出时间

性能

安全性

设置null

HashMap

JDK 1.2

采用异步处理方式,性能更高

非线程安全

允许将key或value设置为null

Hashtable

JDK 1.0

采用同步处理方式,性能相对较低

线程安全

不允许出现null,否则出现空指向异常

3、 Set集合中的内容是不允许重复的,Java依靠什么来判断重复对象?

答: Java依靠Object类中的hashCode()和equals()方法来判断重复对象。

4、 TreeSet类是允许排序的,Java依靠什么进行对象的排序操作?

答: 在TreeSet类中依靠Comparable接口来进行排序。

5、 简述Collection和Collections的区别。

答: Collection是一个接口,用于定义集合操作的标准、Collections是一个工具类,可以操作任意的集合对象。

5、编程题

1、 使用类集实现以下数据表和简单Java类的映射实现;

部门部门编号NUMBER(2)部门名称VARCHAR2(10)位置VARCHAR2(10)...雇员编号部门编号姓名职位领导基本工资佣金...雇员NUMBER(4)NUMBER(2)VARCHAR2(10)VARCHAR2(9)NUMBER(4)NUMBER(7,2)NUMBER(7,2)FK_DEPTNO

import ist;

import or;

import ;

class Emp {

// emp表映射类

private int empno;

private String ename;

private String job;

private double sal;

private double comm;

private Emp mgr;

private Dept dept;

public Emp() {

}

public Emp(int empno, String ename, String job, double sal, double comm) {

}

= empno;

= ename;

= job;

= sal;

= comm;

// 雇员领导

// 雇员所属部门

// 无参构造

// 部分setter、getter略

public void setDept(Dept dept) { // 设置雇员所在部门

}

public Dept getDept() {

}

public void setMgr(Emp mgr) {

}

public Emp getMgr() {

}

@Override

public int hashCode() {

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

return false;

return false;

if (obj == null)

if (getClass() != ss())

Emp other = (Emp) obj;

if (ToLongBits(comm) != Double

.doubleToLongBits())

return false;

if ( != null)

return false;

final int prime = 31;

int result = 1;

long temp;

temp = ToLongBits(comm);

result = prime * result + (int) (temp ^ (temp >>> 32));

result = prime * result + ((dept == null) ? 0 : de());

result = prime * result + empno;

result = prime * result + ((ename == null) ? 0 : de());

result = prime * result + ((job == null) ? 0 : de());

result = prime * result + ((mgr == null) ? 0 : de());

temp = ToLongBits(sal);

result = prime * result + (int) (temp ^ (temp >>> 32));

return result;

return ;

// 取得雇员领导

= mgr;

// 设置雇员领导

return ;

// 取得雇员所在部门

= dept;

if (dept == null) {

} else if (!())

return false;

}

}

if (empno != )

return false;

if ( != null)

return false;

if (ename == null) {

} else if (!())

return false;

if ( != null)

return false;

if (job == null) {

} else if (!())

return false;

if ( != null)

return false;

if (mgr == null) {

} else if (!())

return false;

return false;

if (ToLongBits(sal) != ToLongBits())

return true;

@Override

public String toString() {

}

// dept表映射类

// 取得雇员信息

return "雇员编号:" + + ",姓名:" + + ",职位:" +

+ ",工资:" + + ",佣金:" + ;

class Dept {

private int deptno;

private String dname;

private String loc;

private List emps;

public Dept() {

}

public Dept(int deptno, String dname, String loc) {

}

// 部分setter、getter略

public void setEmps(List emps) {

}

public List getEmps() {

= emps;

this() ; // 调用无参构造

= deptno;

= dname;

= loc;

// 多个雇员

// 无参构造

= new ArrayList() ;

}

}

return emps;

@Override

public String toString() {

}

+ ;

// 取得部门信息

return "部门编号:" + + ",部门名称:" + + ",位置:"

public class TestDemo {

}

程序运行结果: 部门编号:10,部门名称:ACCOUNTING,位置:New Yrok

雇员编号:7369,姓名:SMITH,职位:CLERK,工资:800.0,佣金:0.0

雇员编号:7566,姓名:ALLEN,职位:MANAGER,工资:2450.0,佣金:0.0

---------------------------------------------------

雇员编号:7566,姓名:ALLEN,职位:MANAGER,工资:2450.0,佣金:0.0

雇员编号:7839,姓名:KING,职位:PRESIDENT,工资:5000.0,佣金:0.0

---------------------------------------------------

雇员编号:7839,姓名:KING,职位:PRESIDENT,工资:5000.0,佣金:0.0

---------------------------------------------------

public static void main(String args[]) {

}

// 1、第一层配置关系

Dept dept = new Dept(10, "ACCOUNTING", "New Yrok");

Emp empa = new Emp(7369, "SMITH", "CLERK", 800.0, 0.0);

Emp empb = new Emp(7566, "ALLEN", "MANAGER", 2450.0, 0.0);

Emp empc = new Emp(7839, "KING", "PRESIDENT", 5000.0, 0.0);

(empb);

(empc);

// 设置雇员和领导的关系

// 设置雇员和领导的关系

// 每个雇员属于一个部门

// 每个雇员属于一个部门

// 每个雇员属于一个部门

t(dept);

t(dept);

t(dept);

// 每一个部门有多个雇员,通过对象数组表示多个雇员

s().add(empa) ;

s().add(empb) ;

s().add(empc) ;

// 2、第二层取得关系

n(dept);

Iterator iter = s().iterator() ;

while (t()) {

}

Emp emp = () ;

n(emp);

if (() != null) { // 有领导

}

n("---------------------------------------------------");

n("t" + ());

第14章、Java数据库操作 —— 自我检测(答案)

1、填空题

1、 要想执行数据库更新的操作接口是: Statement 和 PreparedStatement 。

3、 数据库查询结果使用 ResultSet 接口保存。

4、 JDBC中通过 Class 类加载数据库驱动程序。

2、选择题

1、 下列 C 不是getConnection()方法的参数?

A、 数据库用户名 B、 数据库的访问密码

C、 JDBC驱动器的版本 D、 连接数据库的URL

2、 Statement接口中的executeQuery(String sql)方法返回的数据类型是 D 。

A、 Statement接口实例 B、 Connection接口实例

C、 DatabaseMetaData类的对象 D、 ResultSet类的对象

3、 下列不属于更新数据库操作的步骤的一项是 C

A、 加载JDBC驱动程序 B、 定义连接的URL

C、 执行查询操作 D、 执行更新操作

3、判断题

1、 JDBC的驱动程序要在classpath中进行配置。

2、 PreparedStatement是Statement的子接口,使用PreparedStatement要比使用Statement性能更高。

√ ) √ )(

综合测试

1、测试一

1、 下面关于Java的特点不正确的一项是?(B)

2、 下面那种类型不属于Java的基本数据类型?(D)

3、 下面那一个属性与Java解释程序有关?(A)

4、 下面关于Java程序编写描述正确的一项是?(B)

5、 下面那种注释不属于Java语言?(B)

6、 下面那个标识符不符合Java定义要求?(D)

7、 下面那一个关键字(保留字)属于Java未被使用到的关键字(保留字)?(B)

8、 下面那一项关于基本数据类型的描述是正确的?(A)

9、 main()方法的返回值类型是什么?(A)

10、 现在有一个方法:public static int info(int x,double y),下面那个方法是对本方法的正确重载?(C)

(A)、public static int infos(int x,int y);

(B)、public static void info(int x,double y);

(A)、 void (B)、 int (C)、public (D)、static

(A)、boolean数据类型只有true和false两种取值;

(B)、使用long可以保存小数;

(C)、float数据类型可以保存的数据范围比double数据范围要大;

(D)、byte数据类型可以正常保存200这个数字;

(A)、 final (B)、 goto (C)、enum (D)、assert

(A)、 String (B)、_Name (C)、Name123 (D)、100Book

(A)、// 注释 (B)、-- 注释 (C)、/**注释..*/ (D)、/* 注释..*/

(A)、Java程序直接利用命令就可以直接运行程序;

(B)、一个Java文件中可以定义有多个class声明,并且类名称可以与文件名称同名;

(C)、一个Java文件可以使用public class定义多个程序类;

(D)、Java文件的后缀必须使用“*.javac”;

(A)、CLASSPATH (B)、GC (C)、TMP (D)、CPU

(A)、byte (B)、int (C)、boolean (D)、String

(A)、Java具备跨平台性,可以在任意的操作系统间进行移植;

(B)、Java编写的程序可以直接解释执行,属于解释型的编程语言类型;

(C)、Java中具备垃圾收集机制,这样在用户编写代码中无须处理手工处理内存空间的释放操作;

(D)、Java EE企业级开发是在Java SE基础之上的扩展应用。

(C)、public static int info(int x,int y);

(D)、public static void infos(int x,int y);

11、 现在假设有如下程序:

public class Demo {

}

12、 现在假设有如下程序:

public class Demo {

}

以上程序最终的执行结果是什么?(C)

13、 现在假设有如下程序:

public class Demo {

}

以上程序最终的执行结果是什么?(C)

14、 现在假设有如下程序:

public class Demo {

}

以上程序最终的执行结果是什么?(C)

(A)、-2147483648 (B)、2147483649 (C)、2147483647 (D)、2

public static void main(String args[]) {

}

int num = 2147483647 ;

long temp = num + 2L ;

n(num) ;

(A)、-2147483648 (B)、2147483649 (C)、-2147483647 (D)、2

public static void main(String args[]) {

}

int num = 2147483647 ;

num += 2L ;

n(num) ;

(A)、-2147483648 (B)、2147483649 (C)、-2147483647 (D)、2

public static void main(String args[]) {

}

int num = 2147483647 ;

num += 2 ;

n(num) ;

请问最终程序的执行结果是什么?(D)

(A)、102 (B)、1002 (C)、100 (D)、程序错误

public static void main(String args[]) {

}

long num = 100 ;

int x = num + 2 ;

n(x) ;

15、 现在假设有如下程序:

public class Demo {

}

以上程序最终的执行结果是什么?(C)

16、 现在假设有如下程序:

public class Demo {

}

17、 现在假设有如下程序:

public class Demo {

}

18、 现在假设有如下程序:

public class Demo {

public static void main(String args[]) {

}

int sum = 0 ;

for (int x = 0 ; x < 10 ; x ++) {

}

n(sum) ;

sum += x ;

以上程序的最终执行结果是什么?(C)

(A)、55 (B)、10 (C)、程序错误,死循环 (D)、15

public static void main(String args[]) {

}

int sum = 0 ;

int x = 10 ;

while (x > 0) {

}

n(sum) ;

sum += x ;

以上程序最终的执行结果是什么?(C)

(A)、50 (B)、102 (C)、100 (D)、101

public static void main(String args[]) {

}

int num = 50 ;

num = num ++ * 2 ;

n(num) ;

(A)、B (B)、C (C)、D (D)、a

public static void main(String args[]) {

}

int num = 68 ;

char c = (char) num ;

n(c) ;

}

19、 现在假设有如下程序:

public class Demo {

}

19、 现在假设有如下程序:

public class Demo {

}

20、 现在假设有如下程序:

public class Demo {

public static void main(String args[]) {

char c = 'A' ;

int num = 10 ;

switch(c) {

case 'B' :

num ++ ;

num ++ ;

case 'A' :

以上程序的最终执行结果是什么?(D)

(A)、6 (B)、0 (C)、程序错误,死循环 (D)、45

public static void main(String args[]) {

}

int sum = 0 ;

for (int x = 1 ; x < 10 ; x ++) {

}

n(sum) ;

sum += x ;

if (x % 3 == 0) {

}

continue ;

以上程序的最终执行结果是什么?(B)

(A)、6 (B)、0 (C)、程序错误,死循环 (D)、45

public static void main(String args[]) {

}

int sum = 0 ;

for (int x = 0 ; x < 10 ; x ++) {

}

n(sum) ;

sum += x ;

if (x % 3 == 0) {

}

break ;

以上程序的最终执行结果是什么?(D)

(A)、6 (B)、0 (C)、程序错误,死循环 (D)、45

}

}

}

case 'Y' :

num ++ ;

break ;

num -- ;

default :

n(num) ;

以上程序的最终执行结果是什么?(C)

(A)、11 (B)、13 (C)、12 (D)、10

22、 现在假设有如下程序:

public class Demo {

}

23、 现在假设有如下程序:

public class Demo {

}

24、 现在假设有如下程序:

public class Demo {

public static void main(String args[]) {

int x = 10 ;

double y = 20.2 ;

以上程序最终的执行结果是什么?(A)

(A)、01234 (B)、10 (C)、14 (D)、25

public static void main(String args[]) {

}

String str = "" ;

for (int x = 0 ; x < 5 ; x ++) {

}

n(str) ;

str += x ;

以上程序的最终执行结果是什么?(A)

(A)、35 (B)、8 (C)、28 (D)、12

public static void main(String args[]) {

}

public static int inc(int temp) {

}

if (temp > 0) {

}

return -1 ;

return temp * 2 ;

n(inc(10) + inc(8) + inc(-10)) ;

}

}

long z = 10L;

String str = "" + x + y * z ;

n(str) ;

以上程序的最终执行结果是什么?(A)

(A)、10202.0 (B)、0212.0 (C)、302.0 (D)、1020.210

25、 现在假设有如下程序:

public class Demo {

}

26、 编译Java源程序文件产生的字节码文件的扩展名为?(B )

(A)、java

27、 下面的数据声明及赋值那一个是没有错误的?(D)

(A)、float f = 1.3;

(B)、char c = "a";

(C)、byte b = 257;

(D)、int i = 10;

28、

class Happy {

}

运行完上面代码之后输出i的值是多少?(B)

(A)、4 (B)、5 (C)、3 (D)、6

public static void main(String args[]) {

}

int i = 1 ;

int j = i++ ;

if((i==(++j))&&((i++)==j)) {

}

n("i = "+i);

i += j ;

(B)、class (C)、html (D)、exe

以上程序的最终执行结果是什么?(B)

(A)、mldn (B)、yootk (C)、true (D)、程序出错

public static void main(String args[]) {

}

boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;

n(flag ? "mldn" : "yootk") ;

2、测试二

1、 下面那项不属于面向对象的特点?(B)

(A)、封装 (B)、转型 (C)、继承 (D)、多态

2、 下面关于类与对象的描述哪项是正确的?(C)

3、 下面那个权限定义不属于Java?(C)

4、 关于构造方法的描述哪项是正确的?(A)

5、 下面关于String类的特点描述正确的一项是?(B)

6、 下列那一项不属于面向对象程序设计的基本要素?(D)

7、下列程序的执行结果是?(A)

public class TestDemo {

}

8、 顺序执行下列程序语句后,则b的值是多少?(C)

9、 不能直接使用new创建对象的类是?(B)

String str = "Hello" ;

String b = ing(0,2) ;

(A)、Hello (B)、hello (C)、He (D)、null

(A)、编译错误 (B)、0 (C)、1 (D)、运行成功,但不输出

public void fun() {

}

public static void main(String args[]) {

}

Demo d = new Demo();

();

static int i = 0;

i++;

n(i);

(A)、类 (B)、对象 (C)、方法 (D)、安全

(A)、String类在需要时可以定义子类;

(B)、String类的对象内容一旦声明则不可改变;

(C)、String类可以直接利用“==”进行字符串内容的比较;

(D)、String类对象实例化后都会自动存入字符串对象池。

(A)、构造方法;在使用关键字new实例化对象时会自动进行调用;

(B)、一个类中可以没有任何构造方法的定义;

(C)、构造方法不会有返回值,所以需要使用void进行声明;

(D)、构造方法在进行重载时,方法名称可以不同。

(A)、public (B)、private (C)、friend (D)、protected

(A)、任何情况下必须先有类再有对象,对象只能够调用类中定义的方法,不能够调用属性;

(B)、“class”关键字可以定义类,并且要求文件名称与类名称完全一致,否则程序将无法编译通过;

(C)、一个类可以产生多个对象,通过关键字new实例化的每个对象都将拥有属于自己的堆内存空间;

(D)、对象一旦开辟之后即使不再使用了,也会一直占据内存空间不释放。

(A)、静态类 (B)、抽象类 (C)、最终类 (D)、 公有类

10、 为类定义多个名称相同、但参数的类型或个数不同的方法的做法称为?(A)

11、 定义接口的关键字是那个?(C)

12、 现在有两个类A、B,以下描述中表示B继承自A的是 D 。(D)

13、 下面关于子类调用父类构造方法的描述正确的是?(C)

14、 假设类X是类Y的父类,下列声明对象x的语句中不正确的是 D 。(D)

15、 编译并运行下面的程序,程序的执行结果是什么?(B)

public class A {

}

class B extends A {

}

16、 编译运行下面的程序,程序的运行结果是什么?(A)

public class A {

public static void main(String args[]) {

B b = new B();

(A)、产生编译错误

(B)、代码可以编译运行,并输出结果:AB

(D)、编译没有错误,但会运行时会产生异常 (C)、代码可以编译运行,但没有输出

void test() {

}

();

n("B");

public static void main(String args[]) {

}

void test() {

}

("A");

B b = new B();

();

(A)、X x = new X() ;

(C)、Y x = new Y() ;

(B)、X x = new Y() ;

(D)、Y x = new X() ;

(A)、子类定义了自己的构造方法,就不会调用父类的构造方法。

(B)、子类必须通过super关键字调用父类有参的构造方法。

(C)、如果子类的构造方法没有通过super调用父类的构造方法,那么子类会先调用父类中无参构造方法,之后再调(D)、创建子类对象时,先调用子类自己的构造方法,让后再调用父类的构造方法。

(A)、class A extends B

(B)、class B implements A

(D)、 class B extends A (C)、class A implements

(A)、extends (B)、class (C)、interface (D)、public

(A)、方法重载 (B)、方法覆写 (C)、方法继承 (D)、方法重用

用子类自己的构造方法。

}

}

();

public void test() {

}

("A");

class B extends A {

}

17、 下面那种修饰符所定义的方法必须被子类所覆写?(B)

18、 下面那个修饰符所定义的方法不能被子类所覆写?(A)

19、下面的程序编译运行的结果是什么?(A)

public class A implements B {

}

interface B {

}

20、 下面关于接口的说法中不正确的是?(C)

21、 下面关于Java的说法不正确的是那个?(A)

(A)、abstract和final能同时修饰一个类;

(A)、接口所有的方法都是抽象的;

(B)、接口所有的方法一定都是public类型;

(C)、用于定义接口的关键字是implements;

(D)、接口是Java中的特殊类,包含全局常量和抽象方法。

(A)、5,5 (B)、0,5 (C)、0,0 (D)、编译程序产生编译结果

int K = 5;

public static void main(String args[]) {

}

int m, n;

A a = new A();

m = a.K;

n = B.K;

n(m + "," + n);

(A)、final (B)、abstract (C)、static (D)、interface

(A)、final (B)、abstract (C)、static (D)、interface

(A)、产生编译错误,因为类B覆盖类A的方法test()时,降低了其访问控制的级别。

(B)、代码可以编译运行,并输出结果:AB

(C)、代码可以编译运行,但没有输出

(D)、代码可以编译运行,并输出结果:A

void test() {

}

();

n("B");


本文标签: 方法 对象 使用 定义 程序