Javase学习文档------数组

Java 数组是 Java 编程中非常基础和重要的一个知识点。

以下是 Java 数组的主要学习内容:

数组的几个特点
数组在声明时必须指定长度,且长度不可变:数组的长度在声明时就需要确定,一旦确定就不能修改。因此,在使用数组时需要仔细考虑数组大小,以免出现数组越界等问题。
数组可以包含任意类型的数据:Java 数组可以包含任意类型的数据,包括基本数据类型(如 int、double 等)和引用类型(如 String、Object 等)。
数组元素按照顺序存储:数组中的所有元素按照声明时的顺序依次存储,可以通过下标来访问和修改数组元素。
数组是一种对象类型:在 Java 中,数组也是一种对象类型,也就是说数组变量存储的是一个对象的引用。
数组长度可以通过 length 属性获取:数组具有一个 length 属性,可以用于获取数组的长度,例如:int[] nums = {1, 2, 3}; System.out.println(nums.length); // 输出 3

需要注意的是,数组是一种静态数据结构,其大小在声明时就已经确定,因此无法动态地添加或删除元素。同时,数组也存在许多操作上的限制,如无法直接进行插入或删除操作,而只能通过复制元素的方式实现。因此,在设计数据结构时需要根据实际需求选择合适的数据结构。

定义数组:声明数组时需要指定数组长度和元素类型,可以使用数组初始化器或者循环对数组进行初始化。

int[] num1 = new int[length];
int[] num2 = new int[]{123};
String[] names = {"Alice", "Bob", "Charlie"};

访问数组元素:通过下标访问数组元素,下标从0开始计数。例如:a[0] 表示数组 a 的第一个元素。

   String[] names = {"Alice", "Bob", "Charlie"};
        System.out.println(names[0]);
        System.out.println(names[1]);
        System.out.println(names[2]);
    }

数组遍历:循环结构(如:for、while)或 foreach 循环来遍历数组中的所有元素。

//for循环
String[] names = {"Alice", "Bob", "Charlie"};
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
//增强for循环 foreach
 String[] names = {"Alice", "Bob", "Charlie"};
        for (String name : names) {
            System.out.println(name);
        }

数组的排序:Java 提供了 Arrays.sort() 方法,可以对数组进行排序操作。

 int[] nums = new int[]{3,2,1};
        Arrays.sort(nums);
        for (int i : nums) {
            System.out.println(i);
        }
    }

数组的查找:可以使用循环遍历或二分查找等算法实现。

 public static int search(int[] nums, int target) {
        // 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算
        if (target < nums[0] || target > nums[nums.length - 1]) {
            return -1;
        }
        int leftNode = 0;//左边下标
        int rightNode = nums.length - 1;//右边下标
        while (leftNode <= rightNode) {  //或者用 while(leftNode < rightNode)因为left == right的时候,在[leftNode, rightNode)是无效的空间,所以使用 <
            int midNdoe = ((rightNode - leftNode) >> 1) + leftNode;// 等同于(left + right)/2   -->防止溢出
            if (target == nums[midNdoe]) {
                return midNdoe;
            } else if (target > nums[midNdoe]) {
                leftNode = midNdoe + 1;//把左边下标移动 缩小空间
            } else {
                rightNode = midNdoe - 1; //把左边下标移动 缩小空间  若用另一种方法则 rightNode = midNode [target 在左区间,在[left, middle)中]
            }
        }
        return -1;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值