数组-Array

1.数组的概念

/*
    数组的格式
    
    数组:
        同一种数据类型的若干个值的容器
    
    元素:数组中的值称为元素
    索引:元素的标号,从0开始
    长度:数组中元素的个数
*/
public class ArrayDemo1{
    public static void main(String[] args){
        
        int a = 1;
        int b = 2;
        int c = 3;
        
        //数据类型 变量名 = 初始值;
        
        //定义数组,第一种格式:动态初始化,定义数组时,不指定数组里具体的值.
        int[] arr = new int[10];
        
        //第二种静态初始化:定义数组时,元素已经确定
        int[] arr2 = new int[]{1,2,3};
        //简化写法
        int[] arr3 = {10,20,30};
    }
}

2.数组元素的使用

/*
    数组元素的使用:
        数组名[索引值]
        
    数组元素的默认值:
        能为0的为0,能为0.0的为0.0,能为false的为false,能为null的为null
*/
public class ArrayDemo2{
    public static void main(String[] args){
        //创建一个长度为5的int型数组
        // double[] arr = new double[5];
        // boolean[] arr = new boolean[5];
        // String[] arr = new String[5];
        
        
        /*
        
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
        */
        
        // int[] arr = new int[5];        
        // byte[] arr = new byte[5];        
        // short[] arr = new short[5];        
        // char[] arr = new char[5];        
        // int[] arr = new int[5];        
        //用循环改进
        for(int i = 0;i<5;i++){
            System.out.println(arr[i]);
        }
    }
}

3.获取数组中的最值

/*
    获取数组的最值(最大值,最小值)
    
    int[] arr = {1,4,3,2};
    
    
*/
public class ArrayDemo3{
    public static void main(String[] args){
        /*
        int[] arr = getArray(20);
        printArray(arr);
        int max = getMax(arr);
        System.out.println("最大值是: " + max);
        int min = getMin(arr);
        System.out.println("最小值是: " + min);
        */
        printArray(getUniqueArray(20));
    }
    
    //获取一个int型数组的最大值
    public static int getMax(int[] arr){
        int max = arr[0];
        for(int i = 1;i<arr.length;i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
    
    //获取一个int型数组的最小值
    public static int getMin(int[] arr){
        int min = arr[0];
        for(int i = 1;i<arr.length;i++){
            if(arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }
    
    //获取一个范围是1-50之间的int数组
    public static int[] getArray(int n){
        int[] arr = new int[n];
        //循环产生随机数,放到数组中
        for(int i = 0;i<arr.length;i++){
            int r = (int)(Math.random() * 50 + 1);
            arr[i] = r;
        }
        
        return arr;
    }
    
    //打印数组元素
    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
    
    
    //生成一个不包含重复元素的int型数组
    public static int[] getUniqueArray(int n){
        int[] arr = new int[n];//
        for(int i = 0;i<arr.length;i++){
            int r = (int)(Math.random() * 50 + 1);
            while(isExist(arr,r)){
                r = (int)(Math.random() * 50 + 1);
            }
            arr[i] = r;
        }
        return arr;
    }
    
    
    //判断一个数组中是否包含某个数值
    public static boolean isExist(int[] arr,int value){
        for(int i = 0;i<arr.length;i++){
            if(value == arr[i]){
                return true;
            }
        }
        return false;
    }
}

4.从键盘录入数据,并求最值

/*
    从键盘录入数组的元素,并求最值
*/
import java.util.Scanner;

public class ArrayDemo4{
    public static void main(String[] args){
        int[] arr = genArray();
        System.out.println("最大值是: " + getMax(arr));
        System.out.println("最小值是: " + getMin(arr));
    }
    
    //从键盘录入数据,并返回一个int型数组
    public static int[] genArray(){
        Scanner s = new Scanner(System.in);
        
        System.out.print("输入数组的长度 : ");
        int len = s.nextInt();
        int[] arr = new int[len];
        
        for(int i = 0;i<arr.length;i++){
            System.out.print("请输入第"+ (i+1) + "个数: ");
            arr[i] = s.nextInt();
        }
        
        return arr;
    }
    
    //获取最小值
    public static int getMin(int[] arr){
        int min = arr[0];
        for(int i = 1;i<arr.length;i++){
            if(arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }
    
    //获取最大值
    public static int getMax(int[] arr){
        int max = arr[0];
        for(int i = 1;i<arr.length;i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
}

5.随机生成一个5个元素在(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值

/*
    随机生成一个5个元素(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值
*/
public class ArrayDemo6{
    public static void main(String[] args){
        int[] arr = genArray();
        printArray(arr);
        int r = (int)(Math.random() * 10 + 1);
        int index = getIndex(arr,r);
        
        if(index < 0){
            System.out.println(r + "没找到");
        }else{
            System.out.println(r + "第一次出现的索引是: " + index);
        }
        
    }
    
    //获取一个数在指定数组中出现的第一次索引值
    public static int getIndex(int[] arr,int value){
        for(int i = 0;i<arr.length;i++){
            if(arr[i] == value){
                return i;
            }
        }
        return -1;
    }
    
    
    //生成一个int型数组
    public static int[] genArray(){
        int[] arr = new int[5];
        for(int i = 0;i<arr.length;i++){
            int r = (int)(Math.random() * 10 + 1);
            arr[i] = r;
        }
        return arr;
    }
    
    //打印数组
    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

6.用数组模拟裁判打分

    5个裁判,去掉最高分和最低分,然后求剩余元素的平均值.

/*
	用数组模拟打分:
		5个裁判,去掉最高分,最低分,然后求剩余元素的平均值作为最终得分
*/
public class ArrayDemo7{
	public static void main(String[] args){
		int n = 5;
		int[] arr = genArray(n);
		print(arr);
		
		double avg = getAvg(arr);
		System.out.println("平均分是: " + avg);
		
	}
	
	//求平均值
	public static double getAvg(int[] arr){
		int max = getMax(arr);
		int min = getMin(arr);
		
		double sum = 0.0;
		for(int i = 0;i<arr.length;i++){
			sum += arr[i];
		}
		
		sum = sum - max - min;
		
		return sum / (arr.length - 2);
	}
	
	//求最大值
	public static int getMax(int[] arr){
		int max = arr[0];
		for(int i = 1;i<arr.length;i++){
			if(arr[i] > max){
				max = arr[i];
			}
		}
		return max;
	}
	
	//求最小值
	public static int getMin(int[] arr){
		int min = arr[0];
		for(int i = 1;i<arr.length;i++){
			if(arr[i] < min){
				min = arr[i];
			}
		}
		return min;
	}
	
	//
	public static int[] genArray(int n){
		int[] arr = new int[n];
		for(int i = 0;i<arr.length;i++){
			arr[i] = (int)(Math.random() * 101);
		}
		return arr;
	}
	
	public static void print(int[] arr){
		for(int i = 0;i<arr.length;i++){
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
}

7.定义一个int型数组,定义方法,把数组的元素变成原来的2倍

/*
    定义一个int型数组,定义方法,把数组的元素变成原来的2倍
*/
public class ArrayTest{
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5};
        printArray(arr);
        
        doubleArray(arr);
        printArray(arr);
    }
    
    //将元素变成原来的2倍
    public static void doubleArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            arr[i] = arr[i] * 2;
        }
    }
    
    //打印数组元素
    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

8.数组的复制:返回值类型是数组

判断堆空间中的两个对象是否是同一数组,可以使用 ==判断他们的地址值

/*
数组的复制:返回值类型是数组
判断堆空间中的两个对象(数组)是否是同一个数组,可以使用 == 判断他们的地址值
*/
public class CopyArrayDemo{
    public static void main(String[] args){
        int[] arr1 = genArray();
        print(arr1);
        int[] arr2 = copyArray(arr1);
        // int[] arr2 = arr1;
        print(arr2);
        
        // System.out.println(arr1 == arr2);//
        System.out.println(arr1);//[I@6d06d69c  类型@十六进制值
    }
    
    public static int[] genArray(){
        int[] arr = new int[5];
        for(int i = 0;i<arr.length;i++){
            int r = (int)(Math.random() * 50 + 1);
            arr[i] = r;
        }
        return arr;
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
    
    //int[]
    //int[]
    public static int[] copyArray(int[] arr){
        //创建一个和参数一样大小的数组
        int[] copy = new int[arr.length];
        //遍历参数的数组,把元素拷贝到新数组中
        for(int i = 0;i<arr.length;i++){
            copy[i] = arr[i];
        }
        
        return copy;
    }
}

9.自定义方法之间的互相调用

/*
演示自定义方法之间的互相调用
*/
public class Demo{
    public static void main(String[] args){
        introduce("Zhangsan");
    }

    //
    public static void sayHi(){
        System.out.println("Hello");
    }

    //
    public static void introduce(String name){//name = "Zhangsan";
        sayHi();//调用自定义方法
        System.out.println("My name is : " + name);
    }
}

10.求两个double值得四则运算结果

/*
    求两个double值的四则运算结果
*/
public class Demo2{
    public static void main(String[] args){
        test(10.0,2.0);
    }
    
    //void
    //double d1,double d2
    public static void test(double d1,double d2){
        System.out.println("两个数的和是: " + (d1 + d2));
        System.out.println("两个数的差是: " + (d1 - d2));
        System.out.println("两个数的积是: " + (d1 * d2));
        System.out.println("两个数的商是: " + (d1 / d2));
    }
    
}

11.数组的常见异常

/*
    数组操作的常见异常
        1.数组索引越界
        2.空指针异常
*/
public class ExceptionDemo{
    public static void main(String[] args){
        int[] arr = new int[]{1,2,3,4,5,6};
        int[] arr2 = new int[]{7,8,9};
        int[] arr3 = new int[]{70,80,90};
        
        printArray(arr);
        printArray(arr2);
        printArray(arr3);
        
        boolean[] arr4 = {true,false,true,true};
        printArray(arr4);
        
        
        // System.out.println(arr.length);
        
        // for(int i = 0;i<3;i++){//根据数组的length属性动态的获取数组的长度
        // for(int i = 0;i<arr.length;i++){
            // System.out.println(arr[i]);
        // }
        
        // System.out.println(arr[0]);
        // System.out.println(arr[1]);
        // System.out.println(arr[2]);
        // System.out.println(arr[30]);//java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常
        // for(int i = 0;i<arr.length;i++){
            // System.out.println(arr[i]);
        // }
        // arr = null;
        // System.out.println(arr[2]);//java.lang.NullPointerException:空指针异常
        // for(int i = 0;i<arr.length;i++){
            // System.out.println(arr[i]);
        // }
    }
    
    //void
    //int[] arr
    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
    
    public static void printArray(boolean[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

12.合并两个数组

/*
合并两个数组
data1 = [1,2,3]  data2 = [4,5,6]
*/
public class MergeDemo{
    public static void main(String[] args){
        int[] arr1 = genArray();
        int[] arr2 = genArray();
        System.out.println("生成的第一个小数组是:");
        print(arr1);
        System.out.println("生成的第二个小数组是:");
        print(arr2);
        
        int[] res = merge(arr1,arr2);
        System.out.println("合并之后的数组是:");
        print(res);
    }
    
    //随机生成一个长度随机(1-5)的int数组(1-50)
    public static int[] genArray(){
        int len = (int)(Math.random() * 5 + 1);
        int[] arr = new int[len];
        for(int i = 0;i<arr.length;i++){
            arr[i] = (int)(Math.random() * 50 + 1);
        }
        return arr;
    }
    
    //合并两个数组
    public static int[] merge(int[] a,int[] b){
        int[] bigArray = new int[a.length + b.length];
        int index = 0;
        for(int i = 0;i<a.length;i++){
            bigArray[index] = a[i];
            index++;
        }
        
        for(int i = 0;i<b.length;i++){
            bigArray[index] = b[i];
            index++;
        }
        return bigArray;
        /*
        for(int i = 0;i<a.length;i++){
            bigArray[i] = a[i];
        }
        
        //
        for(int i = 0;i<b.length;i++){
            bigArray[i + a.length] = b[i];
        }
        return bigArray;
        */
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

13.

原文地址:https://www.cnblogs.com/leo9257/p/8735414.html