一、单项选择题
1. 下面选项中,错误的数组定义是 【 】
A. int a[][]= new int[10, 10]; B. int a[][]= new int [10][10];
C. int[]a[]= new int[10][10]; D. int[][]a= new int[10][10];
2. 下列选项中,能够实例化一个数组的是 【 】
A. int array1=|2, 3, 4, 5, 6, 7}; B. int array2[]={2,3,4,5,6,7,8};
C. int[]array3 = int[30]; D. int[]array6= new int[];
3. 设字符串变量 s1= new String(" java"), s2 = new String(" java"), 则以下表达式的值为真的是 【 】
A. s1.compareToIgnoreCase(s2) B. sl. equals(s2)
C. s1.compareTo(s2) D. s1==s2
4. 以下 Java程序代码中,能正确创建数组的是 【 】
A. int myArray[]; myArray[]= new int[5];
B. int myArray[]= new my(5);
C. int[]myArray={1, 2, 3,4,5};
D. int myArray[5]={1,2,3,4,5};
5. 以下 Java程序代码中,能正确创建数组的是 【 】
A. int d[4]=|1,2,3,4}; B. int b[]= new int(5);
C. int c={1, 2, 3}; D. int a[]; a = new int[4];
6. 设有数组定义: int ages[4][7];, 则 ages. length 的值是 【 】
A. 4 B. 7 C. 28 D. 11
7. 下列各语句段中,可以生成含5个空字符串数组的是 【 】
Ⅰ. String a[]= new String[5]; for( int i=0; i<5; a[i++]="");
Ⅱ. String a []=|", ", "', ", "} ;
Ⅲ. String a[5];
Ⅳ. String[]a= new String[5]; for( inti=0; i<5;a[i++]= null);
A. Ⅱ B. Ⅰ和Ⅱ C. Ⅰ和Ⅲ D. Ⅰ、 Ⅱ和Ⅳ
二、填空题
1. Java语言提供的用于处理可变字符串的字符串类是StringBuffer 。
2. Java语言提供的用于处理不变字符串的字符串类是 Sring。
3. 使用运算符==判定两个 String类的对象是否相等,此时判定的是 两个对象在内存对象中的存储空间是否相等 。
4. 数组静态初始化是指 在数组声明的同时给数组元素赋初始值。
5. 数组动态初始化时,必须使用 new运算符 分配空间。
6. 数组下标可以是 整型常量或表达式 。
7. 执行 String s1="023368"; String s2 =s1. replace ("3", "6"); 后, s2 的值是 026668。
三、简答题
1. 在Java中是如何完成数组边界检查的?
答:当您尝试访问数组中的元素时,Java 虚拟机(JVM)会自动进行边界检查。如果索引超出了数组的有效范围,JVM 会抛出一个 ArrayIndexOutOfBoundsException 异常。
- 请简述数组创建的过程。如何创建一个对象数组?
答:声明数组变量:声明一个数组变量,指明数组的类型。
分配内存空间:使用 new 操作符为数组分配内存空间,并指定数组的大小(即元素的数量)。
初始化数组元素:可以显式地初始化数组元素,也可以在使用时逐一赋值。
- 数组的内存分配是如何完成的?
答:声明数组变量:分配内存空间,new;初始化数组元素
- 程序5.2的 for语句中使用的两个常数 (4和1) 应该如何修改,保证数组不发生越界错误?
答:
- String类和StringBuffer类有什么区别?
答:String 类用于不可变的字符串,适用于不需要修改字符串内容的场景。
StringBuffer 类用于可变的字符串,并且提供了线程安全的方法,适用于需要频繁修改字符串内容的场景,特别是在多线程环境中。
StringBuilder 类与 StringBuffer 类相似,但方法不是同步的,适用于单线程环境中的字符串构建任务。
- 是否可以继承 String类?
答:String 类是不可继承的。这是因为 String 类被声明为 final,意味着它不能有子类。
四、程序填空题
方法 void moveOddFront( int a[])的功能是将数组a 中的所有奇数都移到数组的前端, 而把偶数放于所有奇数的后面,其方法是当发现是偶数时,就让该数留在原来位置; 当发现是奇数时,就与前面的第一个偶数交换。程序引入变量 odd表示移动过程中遇到的奇数的个数。
public class moveOddFront {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int odd = 0; // 用于记录下一个可以放置奇数的位置
for (int k = 0; k < a.length-1; k++) {
if (a[k] % 2 == 1) { // 如果找到奇数
int t = a[odd];
a[odd] = a[k];
a[k] = t;
odd++; // 将 `odd` 指针向前移动一位
}
}
// 输出结果
for (int value : a) {
System.out.print(value + " ");
}
}
}
五、程序分析题
1. 阅读下列程序,请写出该程序的输出结果。
public class Test12{
public static void main( String[] args){
char[] a={'1','2', '3','4','5', '6','7'};
String s1= new String(a, 2, 4);
String s2 ="JavaWorld!";
System. out. println(s1);
System. out. println(s2. indexOf("a"));
System. out. println(s2. replace("t","r"));
System. out. println(s2. substring(4, 6));
}
}
答:3456
1
JavaWorld!
Wo
2. 阅读下列程序,请写出该程序的输出结果。
public class Test2{
public static void main( String args[]){
String s1 ="XYZ", s2 ="XYZ";
String s3 = new String("XYZ");
System. out. println("s1==s2="+(s1==s2)+"\nsl==s3="+(s1==s3));
}}
答:s1==s2=true
sl==s3=false
3. 阅读下列程序,请写出调用Test3 (4) 的输出结果。
public class MatrixGenerator {
public static void Test3(int n) {
int k, i, j;
int[][] a = new int[n][n];
k = 1;
for (i = 0; i < n; i++) {
if (i % 2 == 0) {
// 填充上三角
for (j = 0; j <= i; j++) {
a[i][j] = k++;
}
// 填充下三角
for (j = i - 1; j >= 0; j--) {
a[j][i] = k++;
}
} else {
// 填充下三角
for (j = 0; j <= i; j++) {
a[j][i] = k++;
}
// 填充上三角
for (j = i - 1; j >= 0; j--) {
a[i][j] = k++;
}
}
}
// 输出矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println(); // 换行
}
}
public static void main(String[] args) {
Test3(4); // 测试函数,生成 5x5 的矩阵
}
}
答:1 2 9 10
4 3 8 11
5 6 7 12
16 15 14 13
六、程序设计题
1. 编写方法 int[]arrayReverse( int[]a), 该方法的功能是返回一个新的数组b, 新数组的元素排列顺序与参数数组的元素排列顺序相反。
2. 定义一个一维整数数组,其中存储随机生成的100个整数,利用你所熟悉的一种排序方法对它们进行升序排序,输出排序前后的数组内容。
3. 定义一个一维整数数组,其中存储随机生成的1000个1~100的整数,统计每个整数出现的次数,并输出结果。
4. 方法 void moveOddFront( int a[])的功能是将数组a 中的所有奇数都移到数组的前端,而把偶数放在所有奇数的后面。
5. 定义一个 Student数组,保存学生的基本信息,包括姓名、学号、性别,还分别保存3门课程的成绩。试编程计算这3门课程的平均成绩,并按平均成绩的降序进行排序,输出排序后的结果。
6. 编写方法 int[] delete( int[]a)。该方法仅保留数组a中下标为偶数且其值也为偶数的元素,其余的元素全部删除,剩余元素形成一个新数组b并返回。
提示:应在删除前对数组元素做标记,以避免删除元素后,后续元素下标值的奇偶性发生变化。