07数组

# 1. 数组

1.1 数组的定义格式

  • 格式一:数据类型 [] 变量名

  • 范例: int[] arr

  • 定义了一个int类型的数组,数组名为arr

  • 推荐格式一

  • 格式二: 数据类型 变量名 []

  • 范例: int arr[]

  • 定义了一个int类型的变量,变量名是arr数组

dataType [] arrayRefVar;   // 首选的方法  

dataType  arrayRefVar[];  // 效果相同,但不是首选方法

int [] arr = new int[3];
/*
  左边:
  	int :数组元素类型
  	[]:这是一个数组
  	arr:数组名称
  右边:
  	new:为数组申请内存空间
  	int:元素类型
  	[]:数组
  	3:数组长度

1.2 内存分配

Snipaste_2021-08-27_09-09-39

Snipaste_2021-08-27_09-12-25

Snipaste_2021-08-27_09-12-52

  • 当多个数组只想同一个内存的时候任何一个数组修改了堆内存的值,另一个数组访问的时候它的元素值也是发生了改变的。
//数组静态初始化
int [] arr = {1,2,1};

案例1: 数组元素求和

Snipaste_2021-08-27_11-43-45

public class SumArr {
    public static void main(String[] args) {
        int [] a = {68,27,95,88,171,996,51,210};
        Sum(a);
    }

    public static void Sum(int[]a){
        int sum = 0;
        for (int x = 0;x<a.length;x++){
            if(a[x]%10!=7 && a[x]/10%10!=7 && a[x]%2==0){
                sum +=a[x];
            }
        }
        System.out.println(sum);
    }
}

案例2: 数组内容相同

Snipaste_2021-08-27_11-54-19

public class SameArr {
    public static void main(String[] args) {
        int []a = {11,22,33,44,55};
        int []b = {11,22,33,44,55};
        boolean c = Same(a,b);
        System.out.println(c);
    }
    public static boolean Same(int[]a,int[]b){
        if (a.length!=b.length){
            return false;
        }

        for(int x=0;x<a.length;x++){
            if(a[x]!=b[x]){
                return false;
            }
        }
        return true;
    }
}

案例3: 反转

Snipaste_2021-08-27_13-51-41

Snipaste_2021-08-27_13-54-45

public class Inversion_array {
    public static void main(String[] args) {
        int []a = {19,28,37,46,50};
        Inversion(a);

    }

    public static void Inversion(int []a){
        for (int start = 0,end=a.length-1;start<=end;start++,end--){
            //变量交换
            int temp = a[start];
            a[start] =a[end];
            a[end] =temp;
        }
        
        System.out.print("[");
        for(int i =0;i<a.length;i++){
            if (i==a.length-1){
                System.out.print(a[i]);
            }else{
                System.out.print(a[i]+",");
            }
        }
        System.out.print("]");
    }
}

案例: 循环嵌套

Snipaste_2021-08-27_11-42-08

public class MaiJiDemo {
    public static void main(String[] args) {
        //第一层循环,用于表示鸡翁的范围,初始化表达式变量定义为x=0,判断条件x<=20
        for(int x = 0;x<=20;x++){
            for(int y=0;y<=33;y++){
                int z=100-x-y;
                if (z%3==0 && 5*x+3*y+z/3==100){
                    System.out.println(x+","+y+","+z);
                }
            }
        }
    }
}
posted @ 2021-09-19 18:06  zjh1170  阅读(24)  评论(0)    收藏  举报