JAVA数组

JAVA数组,第1张

JAVA数组

文章目录
    • 什么是数组数组
      • 创建数组
    • 数组的使用
      • 在JAVA中怎么怎么计算数组的长度
      • 增强for循环
    • 数组赋值机制
    • 数组作为方法的参数
      • 理解引用类型
      • 认识null
      • 初识 JVM 内存区域划分
      • 数组
        • 数组转字符串
        • 数组拷贝
        • 找数组中的最大元素
        • 求数组中元素的平均值
        • 顺序查找
        • 二分查找
        • 检查数组的有序性
    • 二维数组
      • 数组的基本语法
      • 数组的表示

什么是数组数组

数组本质上就是让我们能 “批量” 创建相同类型的变量.
注意事项: 在 Java 中, 数组中包含的变量必须是 相同类型.

创建数组

// 动态初始化
数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 };

 public class Yyyfh {
    public static void main(String[] args) {

       
            int[] array = {9};//[]里面不能写数字;
            int[] array2 = new int[3];
            int[] arr = new int[]{1, 2, 3};
        }
    }

注意事项: 静态初始化的时候, 数组元素个数和初始化数据的格式是一致的
其实数组也可以写成
int arr[] = {1, 2, 3};
这样就和 C 语言更相似了. 但是我们还是更推荐写成 int[] arr 的形式. int和 [] 是一个整体.

数组的使用 在JAVA中怎么怎么计算数组的长度
public class Yyyfh {
    public static void main(String[] args) {

            int[] array = {1, 2, 3, 4, 5, 6, 7, 8};
            System.out.println(array.length);//计算数组的长度
            System.out.println(array[3]);
            System.out.println(array[7]);
            //array[3]=16;//写一些数据
            System.out.println(array[3]);
        }
        
        }

增强for循环
 public static void main9(String[] args) {
        int[] array = {1, 2, 3, 4};
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i] + "");
        }
        System.out.println();
        for (int x : array) {//增强for循环forch;
            System.out.println(x + "");
        }
        System.out.println();

    }


for循环可以拿到下标
for each 拿不到下标

数组赋值机制

1基本数据类型赋值,这个值就是具体的数据,而且相互不影响。 int n1 = 2; int n2 = n1;
2数组在默认情况下是引用传递,赋的值是地址。

在JAVA中一个引用只能指向一个对象,不能同时指向多个对象


数组作为方法的参数
public static void main(String[] args) {
    int[] arr = {1, 2, 3};
    printArray(arr);
}
 
public static void printArray(int[] a) {
    for (int x : a) {
        System.out.println(x)

理解引用类型 认识null

null 在 Java 中表示 “空引用” , 也就是一个无效的引用.

public class Yyyfh {
    public static void main(String[] args) {
        int[] arr = null;
        System.out.println(arr[0]);


    }
}

初识 JVM 内存区域划分

数组 数组转字符串
import java.util.Arrays;
public class Yyyfh {
    public static void main(String[] args) {
       int[] arr = {1,2,3,4,5,6};

        String newArr = Arrays.toString(arr);
        System.out.println(newArr);


    }
}

我们可以得到{1,2,3,4,5,6,}

数组拷贝
import java.util.Arrays;
public class Yyyfh {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = Arrays.copyOf(arr, arr.length);
        System.out.println("newArr: " + Arrays.toString(newArr));

        arr[0] = 10;
        System.out.println("arr: " + Arrays.toString(arr));
        System.out.println("newArr: " + Arrays.toString(newArr));


    }
}

找数组中的最大元素
mport java.util.Arrays;
public class Yyyfh {
    public static void main(String[] args) {

            int[] arr = {1,2,3,4,5,6};
            System.out.println(max(arr));
        }

        public static int max(int[] arr) {
            int max = arr[0];
            for (int i = 1; i < arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
            return max;


    }
}

求数组中元素的平均值
import java.util.Arrays;
public class Yyyfh {
    public static void main(String[] args) {
            int[] arr = {1,2,3,4,5,6};
            System.out.println(avg(arr));
        }

        public static double avg(int[] arr) {
            int sum = 0;
            for (int x : arr) {
                sum += x;
            }
            return (double)sum / (double)arr.length;
        }

    }

顺序查找
import java.util.Arrays;
public class Yyyfh {


    public static void main(String[] args) {
        int[] arr = {1,2,3,10,5,6};
        System.out.println(find(arr, 10));
    }

    public static int find(int[] arr, int toFind) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == toFind) {
                return i;
            }
        }
        return -1;  // 表示没有找到
    }
        }
二分查找
import java.util.Arrays;
public class Yyyfh {
    static int count = 0;
    public static void main(String[] args) {

                int[] arr = makeBigArray();
                int ret = binarySearch(arr, 9999);
                System.out.println("ret = " + ret + " count = " + count);
            }

            public static int[] makeBigArray() {
                int[] arr = new int[10000];
                for (int i = 0; i < 10000; i++) {
                    arr[i] = i;
                }
                return arr;
            }

            public static int binarySearch(int[] arr, int toFind) {
                int left = 0;
                int right = arr.length - 1;
                while (left <= right) {

                    count++;    // 使用一个变量记录循环执行次数

                    int mid = (left + right) / 2;
                    if (toFind < arr[mid]) {
                        // 去左侧区间找
                        right = mid - 1;
                    } else if (toFind > arr[mid]) {
                        // 去右侧区间找
                        left = mid + 1;
                    } else {
                        // 相等, 说明找到了
                        return mid;
                    }

                }
                // 循环结束, 说明没找到
                return -1;
            }
        }

检查数组的有序性
import java.util.Arrays;
public class Yyyfh {
    public static void main(String[] args) {

            int[] arr = {1,2,3,10,5,6};
            System.out.println(isSorted(arr));
        }

        public static boolean isSorted(int[] arr) {
            for (int i = 0; i < arr.length - 1; i++) {
                if (arr[i] > arr[i + 1]) {
                    return false;
                }
            }
            return true;
        }
    }

二维数组

二维数组的定义二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.

数组的基本语法

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

数组的表示
public class Yyyfh {
    public static void main(String[] args) {
        int[][] arr = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
        };

        for (int row = 0; row < arr.length; row++) {
            for (int col = 0; col < arr[row].length; col++) {
                System.out.printf("%dt", arr[row][col]);
            }
            System.out.println("");
        }
    }
        }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5120678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存