1、数组元素的赋值(杨辉三角、回形数等)
2、求数值型数组中元素的最大值、最小值、平均数、总和等
3、数组的复制、反转、查找(线性查找、二分法查找)
4、数组元素的排序算法
使用简单数组
(1)创建一个名为ArrayExer2的类,在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。array[3]=3,array[4]=4)。打印出array1。
class Test{
public static void main(String[ ] args){
//创建一个名为ArrayExer2的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。
int[] array1,array2;
//使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
array1 = new int[]{2,3,5,7,11,13,17,19};
//显示array1的内容。
for (int i = 0;i<array1.length;i++){
System.out.println(array1[i]);
}
//赋值array2变量等于array1,
//不能称作是数组的复制。
array2 = array1;
//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2,array[3]=3,array[4]=4)。
for(int i = 0;i < array2.length;i++){
if(i % 2==0){
array2[i]=i;
}
}
System.out.println();//换行
for (int i = 0;i<array1.length;i++){
//打印出array1。
System.out.println(array1[i]);
}
}
}
因为第四步array2 = array1;所以array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。
所以修改array2和修改array1一样。
array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。
class Test{
public static void main(String[ ] args){
//创建一个名为ArrayExer2的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。
int[] array1,array2;
//使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
array1 = new int[]{2,3,5,7,11,13,17,19};
//输出array1的内容。
for (int i = 0;i<array1.length;i++){
System.out.println(array1[i]);
}
//数组的复制
array2 = new int[array1.length];
for(int i = 0;i < array2.length;i++){
array2[i]=array1[i];
}
//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2,array[3]=3,array[4]=4)。
for(int i = 0;i < array2.length;i++){
if(i % 2==0){
array2[i]=i;
}
}
System.out.println();
for (int i = 0;i<array1.length;i++){
//打印出array1。
System.out.println(array1[i]);
}
}
}
此时后输出的array1即和先前的array1相同。
因为我们在这其中已经new了一个和array1相同的array2.所以修改的array2是array2的地址值。与array1无关。
public class Test {
public static void main(String[] args) {
String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//数组的复制(区别于数组变量的赋值:arr1 = arr)
String[] arr1 = new String[arr.length];
for(int i = 0;i < arr1.length;i++){
arr1[i] = arr[i];
}
//遍历输出
for(int i =0;i<arr.length;i++){
System.out.print(arr[i] + "\t");
}
System.out.println();
/**
//数组的反转
//方法一:定义一个变量
for(int i = 0;i < arr.length/2;i++){
String temp = arr[i];
arr[i] = arr[arr.length - i - 1 ];
arr[arr.length - i - 1 ] = temp;
}
**/
//方法二:定义两个变量
for(int i =0,j = arr.length - 1;i < j;i++,j--){
String temp = arr[i];
arr[i] = arr[j];
arr[arr.length - i -1] = temp;
}
//反转后遍历输出
for(int i =0;i<arr.length;i++){
System.out.print(arr[i] + "\t");
}
}
}
class Test {
public static void main(String[] args) {
String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//遍历输出所有元素
for(int i =0;i<arr.length;i++){
System.out.print(arr[i] + "\t");
}
System.out.println();
//线性查找
String dest = "cc";//所要查找的
boolean isFlag = true;//
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("找到了指定的元素,索引位置为:"+i+"\t"+"元素为:"+arr[i]);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遗憾,没有找到");
}
}
}
前提:所要查找的数组必须有序
class Test {
public static void main(String[] args) {
int[] arr2 = new int[] { -98, -34, 2, 34, 54, 66, 79, 105, 210, 333 };
int dest1 = 105;
int head = 0;// 初始的首索引
int end = arr2.length - 1;// 初始的末索引
boolean isFlag = true;
while (head <= end) {
int middle = (head + end) / 2;
if (dest1 == arr2[middle]) {
System.out.println("找到了指定的元素,位置为:" + middle);
isFlag = false;
break;
} else if (arr2[middle] > dest1) {
end = middle - 1;
} else if (arr2[middle] < dest1) {// 也可以写成else{ 因为是在后半段寻找
head = middle + 1;
}
}
if (isFlag) {
System.out.println("很遗憾,没有找到");
}
}
}