第10篇 数组

1. 数组声明

//方法一:首选
dataType[] arrayName;
//方法二:非首选,像c++
dataType arrayName[];

2. 数组创建

2.1 动态初始化

//不初始化,大小自行决定
dataType[] array = new dataType[arraySize];
  • 如果动态初始化会赋予该类型元素的默认值:0,0.0,false
  • 可以指定数组长度,其中数组长度:arrayName.length;
//例如:
//int[] a = new int[10];//创建了一个长为10的int型数组
int[] a;
a = new int[10];// 4-5与3等价
System.out.println(a);//输出[I@1b6d3586

2.2 静态初始化

//不简写格式:
dataType[] arrayName = new dataType[]{value1, value2, value3, ... };
//简写格式:
dataType[] arrayName = {value1, value2, value3, ... };
  • 静态初始化,数组大小由系统根据初始赋值数量计算自动得出
  • 不能手动给arraySize,即使和赋值数量相等也不行,也就是说第二个[]内不可以有参数
  • 此种方式也保留了更改数组内每个值的权利

3. 数组的存放

3.1数组内容(元素)都是存放在堆中的。

  • 无论数组是动态初始化还是静态初始化都用了 new 关键字来创建空间。静态初始化简写格式实际上也 new 了。

3.2 数组名存放在堆或栈中

数组名实际上是一个引用,存放的是堆区的地址值。这个变量存放在堆区还是栈区取决于它是局部变量还是实例变量。

public class Number {
int array = new int [10];//此array在堆区
public void fun(){
int array = new int [10];//此array在栈区
}
}
3.2.1 地址扩展
int[] a = new int[10];//创建了一个长为10的int型数组
System.out.println(a);//输出[I@1b6d3586

地址值的格式含义 [I@1b6d3586

  • [:表示当前是一个数组
  • I :表示当前数组里面的元素都是int类型的
  • @:表示一个间隔符号。(固定格式)
  • 1b6d3586:这才是数组的地址值的有用部分(十六进制), 不是真的地址值,只是某种hash映射,不过平时我们习惯性的会把这个整体叫作数组的地址值。

4.数组的使用

public static void main(String[] args) {
int[] array = new int[] {1,2,3,4,5};
int count = 0;
//增强for遍历数组
for (int a:array) {
System.out.println("array["+(count++)+"]=" + a);
}
System.out.println("-------------");
array[2]=4;//通过下标修改元素的值
//普通for遍历数组
for (int i = 0; i < array.length; i++) {
System.out.println("array["+i+"]=" + array[i]);
}
}

5.Arrays类

  • Arrays类里的方法都是静态方法可以通过Arrays.方法名()直接调用
import java.util.Arrays;
posted @   问稻  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示