一、选择题
1.ACD
2.B
3.BC
4.B
5.BD
二、 简答题
1.数组的特点
a.数组的长度是确定的,数组一旦被创建,其长度是不可改变的
b.数组的数据类型必须是同一类型,不能有混合类型
c.数组的数据类型可以是基本类型也可以是引用类型
2.数组的优缺点
优点:按照索引查询元素快
能存储大量数据
按照索引遍历数组方便
缺点:根据内容查找元素速度慢
数组的大小一经确定不可改变
增加和删除数组元素的效率慢
只能存储一种数据类型
未封装任何方法,所有操作都需要用户自己定义
3.冒泡排序的算法。
package cn.sxt.arrays;
import java.util.Arrays;
/**
* 测试冒泡排序及优化
* @author Administrator
*
*/
public class TestBubbleSort {
public static void main(String[] args) {
int[] value = {3, 1, 6, 2, 9, 0, 7, 4, 5, 8};
int temp = 0;
//比较大小并排序
for(int i = 0;i<value.length-1;i++) {
boolean flag = true;
for(int j = 0;j<value.length-1-i;j++) {
if(value[j]>value[j+1]) {
temp = value[j];
value[j] = value[j+1];
value[j+1] = temp;
flag = false;
}
System.out.println(Arrays.toString(value));
}
if(flag) {
System.out.println("不进行交换,冒泡结束!");
break;
}
System.out.println("#######################");
}
}
}
4.数组的三种初始化方式是什么?
A.静态初始化:声明数组同时分配空间和赋值
B.动态初始化:先申明数组同时分配空间,后进行赋值
C.默认初始化:Java会自动为有空间的数组赋值,
三、编码题:
1.数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。
package cn.sxt.arrays;
import java.util.Arrays;
public class Exam01 {
public static void main(String[] args) {
//声明字符串数组并初始化
String[] arr = {"hello","hi","how","what","why","you","me","am","is","are"};
//定义关键词
String keyWords = "hoi";
//二分法查找关键字,并用索引值来判断是否存在
int h =Arrays.binarySearch(arr, keyWords);
if(h>=0&&h<arr.length) {
System.out.println("yes");
}else {
System.out.println("no");
}
}
}
2.获取数组最大值和最小值操作:利用Java的Math类的random()方法,编写函数得到0到n之间的随机数,n是参数。并找出产生50个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个。
提示:使用 int num=(int)(n*Math.random());获取随机数。
package cn.sxt.arrays;
import java.util.Arrays;
public class Exam02 {
public static void main(String[] args) {
//定义一个数组并随机赋0~100的值
int n = 100;
int[] sum = new int[50];
for(int i = 0;i<sum.length;i++) {
sum[i] = (int)(n*Math.random());
}
System.out.println(Arrays.toString(sum));
//数组排序
Arrays.sort(sum);
System.out.println(Arrays.toString(sum));
//遍历数组并确定其中数值大于等于60的个数
int count = 0;
for(int j = 0;j<sum.length;j++){
if(sum[j]>=60) {
count++;
}
}
System.out.println("该随机数组的最小值为:"+sum[0]);
System.out.println("该随机数组的最大值为:"+sum[49]);
System.out.println("该随机数组中大于等于60的个数有:"+count);
}
}
3.数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。
思路:把0索引和arr.length-1的元素交换,把1索引和arr.length-2的元素交换……
只要交换到arr.length/2的时候即可。
package cn.sxt.arrays;
import java.util.Arrays;
public class Exam03 {
public static void main(String[] args) {
//声明一个数组
int[] a = {0,1,2,3,4,5,6,7,8,9};
//拷贝原数组
int[] b = new int[10];
System.arraycopy(a, 0, b, 0, 10);
//对数组进行逆序操作
int temp = 0;
for(int i = 0;i<=a.length/2;i++) {
temp = a[i];
a[i] = a[a.length-1-i];
a[a.length-1-i] = temp;
}
//打印输出
System.out.println("原数组:"+Arrays.toString(b));
System.out.println("逆序数组:"+Arrays.toString(a));
}
}