一、 选择题
1.在Java中,以下程序段能正确为数组赋值的是( )。(选择二项)
A.
int a[]={1,2,3,4};
B.
int b[4]={1,2,3,4};
C.
int c[];
c=new int[] {1,2,3,4};
D.
int d[];d=new int[]{1,2,3,4};
2.已知表达式int [] m={0,1,2,3,4,5,6};下面( )表达式的值与数组最大下标数相等。(选择一项)
A.
m.length()
B.
m.length-1
C.
m.length()+1
D.
m.length+1
3.在Java中,以下定义数组的语句正确的是( )。(选择二项)
A.
int t[10]=new int[ ];
B.(重复定义)
char [ ]a=new char[5];
char []a={‘a’,’b’};
C.
String [ ] s=new String [10];
D.(重复定义)
double[ ] d [ ]=new double [4][ ];
double[][] d;
double d[][];
4.分析下面的Java源程序,编译后的运行结果是( )。(选择一项)
import java.util.*;
public class Test {
public static void main(String[ ] args) {
int [ ] numbers=new int[ ]{1,2,3};
System.out.println(Arrays.binarySearch(numbers, 2));
}
}
A.输出:0
B.输出:1
C.输出:2
D.输出:3
5.以下选项中能够正确创建一个数组的是( )。(选择二项)
A.
float []f[] = new float[6][6];
B.
float f[][] = new float[][];
C.
float [6][]f = new float[6][6];
D.
float [][]f = new float[6][];
二、 简答题
-
数组的特点。
长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
其元素必须是相同类型,不允许出现混合类型。
数组类型可以是任何数据类型,包括基本类型和引用类型。 -
数组的优缺点
不可扩展数组长度但是访问速度较快。 -
冒泡排序的算法。
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5, 8 };
bubbleSort(values);
System.out.println(Arrays.toString(values));
}
public static void bubbleSort(int[] values) {
int temp;
for (int i = 0; i < values.length; i++) {
for (int j = 0; j < values.length - 1 - i; j++) {
if (values[j] > values[j + 1]) {
temp = values[j];
values[j] = values[j + 1];
values[j + 1] = temp;
}
}
}
}
}
- 数组的三种初始化方式是什么?
静态初始化
int[] a = { 1, 2, 3 };// 静态初始化基本类型数组;
Man[] mans = { new Man(1, 1), new Man(2, 2) };// 静态初始化引用类型数组;
动态初始化
数组定义与为数组元素分配空间并赋值的操作分开进行。
默认初始化
int a2[] = new int[2]; // 默认值:0,0
boolean[] b = new boolean[2]; // 默认值:false,false
String[] s = new String[2]; // 默认值:null, null
三、 编码题
- 数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。
import java.util.Arrays;
import java.util.Scanner;
public class Seventh1 {
public static void main(String[] args) {
String [] vocabulary = {"aaa","bbb","ccc","ddd","eee","fff","ggg"};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要搜索的单词:");
String word = scanner.next();
if (Arrays.binarySearch(vocabulary, word) != -2) {
System.out.println("搜索结果:YES");
}else {
System.out.println("搜索结果:NO");
}
}
}
- 获取数组最大值和最小值操作:利用Java的Math类的random()方法,编写函数得到0到n之间的随机数,n是参数。并找出产生50个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个。
提示:使用 int num=(int)(n*Math.random());获取随机数。
import java.util.Arrays;
public class Seventh2 {
public static void main(String[] args) {
int n = 100;
int count = 0;
int[] nums = new int[50];
for(int i=0;i<50;i++) {
nums[i] = (int)(n*Math.random());
}
Arrays.sort(nums);
System.out.println("最小的数为:"+nums[0]);
System.out.println("最小的数为:"+nums[49]);
for(int i=0;i<50;i++) {
if(nums[i]>60) {
count++;
}
}
System.out.println("大于60的数有:"+count+"个");
}
}
-
数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。
思路:把0索引和arr.length-1的元素交换,把1索引和arr.length-2的元素交换……
只要交换到arr.length/2的时候即可。
public class Seventh3 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,7,8,9,10};
reverse(nums);
for(int num:nums) {
System.out.print(num+" ");
}
}
static void reverse(int[] nums) {
int k;
for(int i=0;i<nums.length/2;i++) {
k=nums[i];
nums[i]=nums[nums.length-(i+1)];
nums[nums.length-(i+1)]=k;
}
}
}