做企业网站需要提供什么上海seo搜索优化
数组是一种用于存储同类型数据的容器结构,其存储规则需遵循Java语言的隐式转换机制:
1. 类型匹配规则
基本数据类型数组仅允许存储与其声明类型兼容的数据
例如:int数组可存储byte/short/int类型(因存在自动类型提升), 禁止存储boolean/double等不兼容类型。
2. 建议保持数组类型与存储数据的严格匹配
整数序列(如1, 2, 3)应使用int[]存储
浮点数据(如1.1, 1.2)应使用double[]存储
字符串集合(如"aaa", "bbb")应使用String[]存储
一、数据的初始化
静态初始化
完整格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4...};,比如:
int[] arr = new int[]{11,22,33};double[] arr = new double[]{1.1,1.2,1.3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,元素3,元素4...};,比如:
int[] array = {1,2,3,4,5};double[] array = {1.1,1.2,1.3};
数组的定义和地址值
package arraydemo;public class Arraydemo1 {public static void main(String[] args) {int[] numbers = new int[]{1, 2, 3}; // 动态分配与静态赋值结合
// 可简写为:int[] numbers2 = {1, 2, 3};double[] prices = new double[]{1.2,1.3,1.4,1.5,1.6}; // 创建长度为5的double数组boolean[] flags = new boolean[3]; // 布尔数组默认初始化为falseString[] namesArr = new String[]{"zhangsan","lisi","wangwu"};System.out.println(numbers);System.out.println(prices);System.out.println(flags);}
}
如果直接输出数组名称,那么就会得到地址值
[I@4eec7777
[D@3b07d329 //D是double类型的
[Z@41629346 //Z是bool类型的Process finished with exit code 0
以[I@4eec7777为例,我们来看一下这个地址值有什么意义呢?
- [ :表示现在打印的是一个数组。
- I:表示现在打印的数组是int类型的。
- @:仅仅是一个间隔符号而已。
- 4eec7777:就是数组在内存中真正的地址值。(十六进制的)
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];
例如:
int[] arr = new int[30];
这里的 数据类型
可以是基本数据类型(如 int
、double
、boolean
等),也可以是引用数据类型(如 String
、自定义类等);数组名
是你为数组取的标识符;数组长度
是一个正整数,表示数组可以存储元素的数量。
动态初始化时,整数类型默认值为:0
小数类型:0.0
布尔类型:false
字符类型:'\u0000'
引用类型:nul
动态初始化和静态初始化的区别
静态初始化:int[] arr = {1,2,3,4,5};
动态初始化:int[] arr = new int[3];
静态初始化:手动指定数组的元素,系统会根据元素的个数,计算出数组的长度。代码较为简洁,但不够灵活。若要改变数组元素的数量,就需要修改代码里的元素列表。
动态初始化:手动指定数组长度,由系统给出默认初始化值。相对灵活,可依据程序运行时的条件来确定数组的长度。例如可根据用户输入的数量来创建数组。
二、使用数组元素
数组元素的访问
数组中的每个元素都有一个唯一的索引,索引是从 0 开始的整数,用于标识数组中元素的位置。通过索引可以访问数组中的特定元素。
数组名[索引];
public class ArrayAccessExample {public static void main(String[] args) {// 静态初始化一个整数数组int[] numbers = {10, 20, 30, 40, 50};// 访问数组中索引为 2 的元素int element = numbers[2];System.out.println("索引为 2 的元素是: " + element);// 访问数组的第一个元素(索引为 0)int firstElement = numbers[0];System.out.println("数组的第一个元素是: " + firstElement);// 访问数组的最后一个元素int lastElement = numbers[numbers.length - 1];System.out.println("数组的最后一个元素是: " + lastElement);}
}
numbers[2]
:通过索引 2 访问数组numbers
中的元素(也就是第三个数字),此时访问到的值是 30。numbers[0]
:访问数组的第一个元素。numbers[numbers.length - 1]
:由于数组索引从 0 开始,所以数组的最后一个元素的索引是数组长度减 1,通过numbers.length
获取数组的长度。
数组的遍历
数组名.fori 即可生成以下代码(这里我使用的是IntelliJ IDEA 2022.3.2):
//使用for循环遍历数组
for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}
我这里就可以直接输入arr.fori,之后Tab一下,就会得到上面这个for循环啦!
下面做个小练习,通过遍历来完成数组的求和 :
package arraydemo;public class arraydemo2 {public static void main(String[] args) {//定义数组int[] arr = {1, 2, 3, 4, 5,4,3,2};int sum=0;for(int i=0;i<arr.length;i++){sum=sum+arr[i];}System.out.println(sum);}
}
数组元素的修改
要修改数组中的元素,同样是通过索引定位到要修改的元素,然后使用赋值语句为其赋予新的值。
数组名[索引] = 新值;
public class ArrayModifyExample {public static void main(String[] args) {// 动态初始化一个整数数组int[] scores = new int[5];// 为数组元素赋值scores[0] = 80;scores[1] = 90;scores[2] = 75;scores[3] = 85;scores[4] = 95;// 输出修改前数组中索引为 2 的元素System.out.println("修改前,索引为 2 的元素是: " + scores[2]);// 修改数组中索引为 2 的元素的值scores[2] = 88;// 输出修改后数组中索引为 2 的元素System.out.println("修改后,索引为 2 的元素是: " + scores[2]);}
}
scores[2] = 88;
:将数组 scores
中索引为 2 的元素的值修改为 88。