数组的复制与赋值
/*
* 使用简单数组
*(1)创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,
*他们是int[]类型的数组。
*(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
*(3)显示array1的内容。//遍历
*(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
*(如array[0]=0,array[2]=2)。打印出array1。
*
*思考:array1和array2是什么关系?
* array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体
*拓展:修改题目,实现array2对array1数组的复制
*/
public class ArrayExer2 {
public static void main(String[] args) {
//声明
int[] array1,array2;
//初始化
array1=new int[]{2,3,5,7,11,13,17,19};
//遍历
for(int i=0;i<array1.length;i++) {
System.out.print(array1[i]+"\t");
}
System.out.println();
//赋值array2变量等于array1
// array2=array1;
//此结果为:
//2 3 5 7 11 13 17 19
//0 3 2 7 4 13 6 19
//实现array2对array1数组的复制
array2=new int[array1.length];//只要有重新new的,就生成一个新数组
for(int i=0;i<array2.length;i++) {
array2[i]=array1[i];
}
//此结果为:
//2 3 5 7 11 13 17 19
//2 3 5 7 11 13 17 19
//修改array2中的偶索引元素,使其等于索引值
for(int i=0;i<array2.length;i++) {
if(i==0|i%2==0) {
array2[i]=i;
}
}
/*
* 数组的复制、反转、查找(线性查找、二分法查找)
*/
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr=new String[] {"JJ","DD","MM","GG","AA","BB"};
//2.查找(或搜索)
//2.1线性查找:
String dest="BB";
Boolean isflag=true;
for(int i=0;i<arr.length;i++) {
if(dest.equals(arr[i])) { //equals指的是内容,看内容是否相等
System.out.println("找到了指定的元素,位置为:"+i);
isflag=false;
break;
}
}
if(isflag) {
System.out.println("很遗憾,没有找到哦!");
}
//2.2二分法查找(前提:数组为顺序排列)
int[] arr2=new int[] {-98,-34,2,34,54,66,79,105,210,333};
int dest1=88;
int head=0;//初始的首索引
int end=arr2.length-1;//初始的末索引
boolean isflag1=true;
while(head<=end) {
int middle=(head+end)/2;
if(dest1==arr2[middle]) {
System.out.println("找到了指定元素,位置为:"+middle);
isflag1=false;
break;
}else if(dest1<arr2[middle]) {
end=middle-1;
}else {
head=middle+1;
}
}
if(isflag1) {
System.out.println("不好意思呢亲,没有找到呢");
}
}
}