当前位置: 首页 > news >正文

Java中的数组

目录

1. 数组的定义

2. 数组的初始化

2.1 静态初始化

2.2 动态初始化

3. 数组的使用

4. 数组的内存视图


1. 数组的定义

数组是一种用于存储相同类型数据的容器。数组的大小是固定的,一旦创建就无法更改。数组可以存储基本数据类型(如int、float、char、string)或引用类型(如对象)。

数组分为一维数组和二维数组,一维数组类似数轴,每个元素占一个空间,二维数组是数组的数组,用来表示矩阵或表格数据。

2. 数组的初始化

2.1 静态初始化

静态初始化是指在声明数组的同时直接赋予数组初始值。这种方式适用于在数组声明时就已经知道数组元素的具体值的情况,简洁且易于理解。

int[] arr1=new int[]{1,2,3,4,5};
int[] arr2={1,2,3,4,5};

上述两种方式都是静态初始化,第一种为完整,第二种较为简洁。格式为 数据类型[] 数组名 = {元素1,元素2}

也可以对字符串等其他类型数组进行初始化。

String[] fruits = {"Apple", "Banana", "Cherry"};

这种初始化的特点就是

1.数组的长度由初始化时的元素个数自动确定,不需要手动指定。

2.初始化方式简洁明了,适用于在定义数组时就能确定初始值的场景。

3. 在数组声明的同时完成赋值,不需要逐个赋值操作。

2.2 动态初始化

指在声明数组时先指定数组的长度,然后在运行时通过程序逻辑或条件为数组元素赋值。这种方式适用于当数组的初始值在程序运行过程中才确定的情况。

格式为  数据类型[] 数组名 = new 数据类型[数组长度];

public class Demo {public static void main(String[] args){int[] array = new int[5];array[0]=1;array[1]=2;array[2]=3;array[3]=4;array[4]=5;}
}

这种初始化的特点是

1.数组元素的值可以根据运行时的条件、计算结果或用户输入等动态确定

2.适用于数组的初始值在编写代码时不确定的情况,可以根据程序的具体需求进行赋值。

3.与静态初始化不同,动态初始化的数组在创建时只有长度确定,元素的具体值需要手动赋值。

与静态初始化的使用要区分开来,灵活运用。

3. 数组的使用

要用会使用数组,就要知道数组的索引(index),例如array[0]指的是数组中的第一个元素,索引从0开始,此外,数组有一个属性——length,它指的是数组的元素个数,length-1就是索引的最大值,超出最大索引值的元素全被赋予为null,即空值。

此外可以通过length来完成对数组的遍历。

public class Demo {public static void main(String[] args){int[] array = {1,2,3,4,5};for(int i=0;i<array.length;i++){System.out.println("数组的第"+(i+1)+"个元素是"+array[i]);}}
}

结果如下

 

此外,数组创建后里面的元素是可以修改,删除的,极大的方便了数组的后续使用。

4. 数组的内存视图

数组在内存中是连续存储的,这意味着数组的所有元素依次存放在相邻的内存地址中,每个元素占据相同大小的内存空间。

public class Demo {public static void main(String[] args){int[] array = {10,20,30,40};System.out.println(array);}
}

这是数组的初始地址,为[I@10f87f48,这是哈希码

  • [:表示这是一个数组。[ 是一个特殊的符号,表示这个对象是一个数组类型。

  • I:表示数组的元素类型。Java 中的一些常见类型符号包括:

    • I 表示 int 类型。
    • D 表示 double 类型。
    • F 表示 float 类型。
    • J 表示 long 类型。
    • B 表示 byte 类型。
    • C 表示 char 类型。
    • Z 表示 boolean 类型。
    • L<class name>; 表示一个对象类型,<class name> 是类的完整名称。

    在这个例子中,I 表示这是一个 int 类型的数组。

  • @:分隔符,用于分隔类型信息和哈希码。

  • 10f87f48:这是该数组对象的哈希码的十六进制表示。这个值是基于数组对象的内存地址生成的,但它并不直接是内存地址。

 如果将一个数组赋值给另一个数组,二者所指向的内存空间是一致的,是原数组的空间,此外空间分配时,各个变量的空间不会重复。


http://www.mrgr.cn/news/11521.html

相关文章:

  • css属性 :nth-of-type() 的使用
  • NV GPU FMA指令测试
  • 二分算法8️⃣-0~n-1 中缺失的数字(easy)
  • uni-cli 编译和打包并自动打开微信开发者工具
  • 谷歌地图-地理编码,根据地址文本获取经纬度并计算距离
  • redis单线程 ,当redis在执行lua脚本的时候,会执行其他redis操作吗?
  • Android 退出app方式(回忆录)
  • Android高级UI --- canvas
  • Apache Dolphinscheduler Standalone 部署教程
  • Uniapp使用InnerAudioContext返回内部 audio 上下文 ,获取不到duration当前音频的长度,如何解决?
  • 【Python机器学习】NLP分词——利用分词器构建词汇表(二)——点积
  • 如何解决错误Given calling package android does not match caller‘s uid-学员提问
  • Qt QCustomPlot画色阶图
  • 牛津大学发布首篇《Transformer多模态学习》综述论文,23页pdf涵盖310篇文献全面阐述MMT的理论与应用
  • 2.初识springcloud
  • 一个干净的python项目(没连数据库啥的)
  • ptrade排坑日记——交易策略报错: ‘NoneType‘ object is not subscriptable 。
  • 百日筑基第六十天-学习一下Tomcat
  • unity的 Assembly definitions- asmdef文件
  • Python网络编程:Web框架基础(Flask/Django)