Java入门之数组
1、数组定义
- 数组是相同类型数据的有序集合;
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成;
- 每个数据称作数组元素,每个元素可以通过一个下标来访问;
2、数组声明创建
- 首先必须声明数组变量,才能在程序中使用数组;
- 创建数组
- 数组元素通过索引访问,索引从0开始
- 数组长度通过length来获取
1 public static void main(String[] args) { 2 int[] arr; //声明数组变量arr 3 arr = new int[5]; //创建数组 4 arr[0] = 10; //赋值,索引从0开始,未赋值元素int类型默认为0 5 arr[1] = 6; 6 int length = arr.length; //获取数组长度 7 System.out.println("length:" + length); 8 for (int i = 0; i < arr.length; i++) { 9 System.out.println("a[" + i + "]:" + arr[i]); 10 } 11 }
3、数组的基本特点
- 数组的长度是确定的。一旦被创建,大小是不可以改变的;
- 元素必须是相同类型,不允许出现混合类型;
- 数组中的元素可以是基本类型或者引用类型;
- 数组可以看成是对象,每个元素相当于该对象的成员变量。
4、数组的初始化
(1)静态初始化
int[] a = {1,2,3}; People people = {new People("h",29),new People("s",30)}; //People对象
(2)动态初始化
int[] a = new int[2]; a[0] = 1; a[1] = 2;
(3)默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
5、数组边界
- 下标的合法区间:[0,length-1]
- 数组下标越界会报异常:ArrayIndexOutOfBoundsException
6、数组的使用
- 普通for循环
- for-each循环
- 数组作方法入参
- 数组作返回值
1 public static void main(String[] args) { 2 int[] oldData = {1,2,3,4,5}; 3 System.out.print("oldData:"); 4 for (int o : oldData) { 5 System.out.print(o + "\t"); 6 } 7 System.out.println(); 8 int[] newData = reverse(oldData); 9 System.out.print("newData:"); 10 for(int i : newData){ 11 System.out.print(i + "\t"); 12 } 13 } 14 //数组反转 15 public static int[] reverse(int[] arrays){ 16 int[] result = new int[arrays.length]; 17 for (int i = 0,j = arrays.length-1; i < arrays.length; i++,j--) { 18 result[j] = arrays[i]; 19 } 20 return result; 21 }
7、二维数组
二维数组就是一个特殊的一位数组,其每个元素都是一个一唯数组。
int[][] num = new int[2][3]; //可以看成是2行3列的数组 //初始化 num[0][0] = 1; num[0][1] = 2; num[0][2] = 3; num[1][0] = 10; num[1][1] = 20; num[1][2] = 30;
打印二维数组中的元素
1 public static void main(String[] args) { 2 3 int[][] num = {{1,2},{2,3},{3,4}}; //3行2列 4 for (int i = 0; i < num.length; i++) { 5 for (int j = 0; j < num[i].length; j++) { 6 System.out.print(num[i][j] + "\t"); 7 } 8 } 9 10 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!