10.short shortValue=220; byte byteValue=shortValue; ( × ) 11.int[] intArray[60]; ( × )
12.char[] str=\( × )
13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。( √ )
14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。( √ ) 四、分析题
1.分析下面的程序,写出运行结果。 public class Exercises5_1 {
String str = new String(\ char[] ch = { 'L', 'i', 'k', 'e' };
public static void main(String args[]) { Exercises5_1 ex = new Exercises5_1(); ex.change(ex.str, ex.ch); System.out.print(ex.str + \ System.out.print(ex.ch); }
public void change(String str, char ch[]) { str = \ ch[1] = 'u'; } }
运行结果是:( Hi ! Luke ) 2.分析下面的程序,写出运行结果。 public class Exercises5_2 {
public static void main(String[] args) { int n = 1, m, j, i; for (i = 3; i <= 30; i += 2) { m = (int) Math.sqrt((double) i); for (j = 2; j <= m; j++) if ((i % j) == 0) break; if (j >= m + 1) { System.out.print(i + \ if (n % 5 == 0) System.out.print(\ n++; } } } }
运行结果是:( ) 3 5 7 11 13 17 19 23 29
3.分析下面的程序,写出运行结果:
};
public class Exercises5_3 {
public static void main(String args[]) { String str1 = new String();
String str2 = new String(\
char chars[] = { 'a', ' ', 's', 't', 'r', 'i', 'n', 'g' }; String str3 = new String(chars);
String str4 = new String(chars, 2, 6);
byte bytes[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, String str5 = new String(bytes);
StringBuffer strb = new StringBuffer(str3);
System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ }
}
运行结果是:( ) The String str1 is
The String str2 is String 2 The String str3 is a string The String str4 is string The String str5 is 0123456789 The String strb is a string
0x39
五、改错题
1.找出下面代码的错误部分,说明错误类型及原因,并更正。
public int m1 (int number[20]){ number = new int[20]; for(int i=0;i 改正后程序: public int[] m1(int number[]) { // number = new int[20]; for (int i = 1; i < number.length - 1; i++) number[i] = number[i - 1] + number[i + 1]; return number; } 2.找出下面代码的错误部分,说明错误类型及原因,并更正。 (1) int x = 1; while (x <= 10); { i++; } 改正后程序: int x = 1, i = 0; while (x <= 10) { i++; } (2) switch (n) { case 1: system.out.println(\ case 2: system.out.println(\ break; } 改正后程序: int n = 1; switch (n) { case 1: System.out.println(\ break; case 2: System.out.println(\ break; } 六、简答题 1.Java的关键字有哪些? 2.标识符有何用途?Java中定义标识符的规则有哪些? 3.Java定义了哪些基本数据类型?基本数据类型和引用数据类型的特点是什么?字节型和字符型数据有何区别?长度为32位的基本数据类型有哪些? 4.整型常量有哪三种表示形式?浮点型变量有哪两种表示形式?布尔型常量可以转换成其他数据类型吗? 5.在Java 语言中,表示字符串常量和字符常量时应注意哪些问题? 6.在Java转义字符表示中,ASCII码值对应的字符如何表示?Unicode字符集中对应的字符如何表示? 7.什么是表达式语句?什么是空语句?什么是块语句?可以把块语句视为一条语种吗? 8.if语句中,<条件表达式>一定是逻辑型表达式吗? switch语句中,<语句序列>里一定有break语句吗? 9.while循环语句与do-while循环语句有何不同? 10.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么? 11.break语句和continue语句有哪两种形式? 12.创建数组元素为基本数据类型的数组时,系统都会指定默认值吗?布尔型的默认值是什么? 13.在Java中怎样定义和使用一维数组、二维数组? 14.字符串类String 和StringBuffer类有何不同? 15.Java中的数组实际上是一个隐含的“数组类”的对象,而数组名实际上是该对象的一个引用,这种说法对吗? 16.字符数组与字符串有本质的不同,而字符串实际上是String类和StringBuffer类的对象,这种说法对吗? 一、填空题 1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。 2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。 3.模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。 4.UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。 5.在UML类图中分别用( + )、( # )、( ~ )和( - )表示属性与方法的公有、保护、默认和私有访问控制权限。 6.在UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。 7.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。 8.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。 9.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。 10.对象作方法形参时,方法实参也用对象,实现(引用)调用。 11.( new)是一个特殊的方法,用于创建一个类的实例。 12.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。 13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。 14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。 15.Java使用固定于首行的(package)语句来创建包。 16.在运行时,由java解释器自动引入,而不用import语句引入的包是(java.lang)。 17.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。 二、简答题 1.名词解释:抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML。 2.简述面向对象的基本思想、主要特征和基本要素。 3.为什么要对类进行封装?封装的原则是什么? 4.类的封装性、继承性和多态性各自的内涵是什么? 5.什么是对象?什么是类?二者有何关系? 6.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么? 7.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符? 8.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符? 9.简述构造方法的特点与作用。 10.Java中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值? 11.什么是包?如何创建包?如何引用包? Java语言面向对象基础 习 题 三