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[]{1,2,3};
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;
}