首页 / JAVA / Java开发知识之Java数组
Java开发知识之Java数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java开发知识之Java数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6096字,纯文字阅读大概需要9分钟。
内容图文
Java开发知识之Java数组
一丶数组简介
首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构
在Java中数组可以看成是一个对象. C++ 中数组就是数组. Java中的数组其实是封装的数组.虽然是由基础类型组成.但可以当对象使用. C++中的则不可以.
数组可以分为一维数组. 二维数组. 三维数组 .高维数组..
二丶一维数组
使用数组我们就要学会声明
1.数组的声明
在Java中数组是new出来的.所以我们可以使用new关键字. 有两种方式
先声明后new
数组元素类型 数组名字[]; //定义
数组元素类型[] 数组名字; //定义
数组名字 = new 数组元素类型[个数]; //分配内存,分配了内存才可以使用
数组元素类型 数组名[] = new 数组元素类型[个数];
关于第一种,想必C++开发人员比较熟悉.在C++中数组的定义就是这样定义的.
Java中数组只是定义.并没有实际内存来存放数据.所以下面我们必须要用new关键字分配内存.
[] 运算符. 关于数组元素类型.我们可以是int ,如果是int 那么数组每个元素的大小都是int类型大小. 也可以是对象.
如果是对象,那么数组元素大小都是 数组元素类型的大小.
代码:
int Array1[]; Array1 = new int[10]; //定义的时候括号在前在后都可以 int []Array2 = new int[100];//括号在前也可以
int arr[] = new int[5]; 了解内存模式
元素有5个. arr[0] - arr[4];
下标也是5个,用来访问数组内容的. 但是数组下标都是从0开始的. 也就是0位置的元素是arr[0] 5位置的元素是arr[4]
下标计算方法: 数组元素的最大个数 - 1; 比如你new了 100个.元素个数100个. 100-1 就是下标最大值了. 从0 - 100 -1;
2.一维数组的初始化.
在我们定义数组的同事可以进行初始化.这也方便我们的编程
语法1:
数组元素类型 数组名[] = new 数组元素类型[]{值,值,值};
语法2:
数组元素类型 数组名[] = {值,值,值};
代码例子:
int Array1[] = new int[] {1,2,3,4,5,6,7,8,9,10}; int Array2[] = {1,2,3,4,5,6,7,8,9,10};
3.一维数组的使用
数组一般用来遍历的.数组的遍历使用for循环.或者foreach都可以.数组可以看成一个对象.那么数组元素的大小就在对象中存储着.所以我们可以直接使用.不用再计算数组的大小了
for循环
for (int i = 0; i < Array1.length; i++) { System.out.println(Array1[i]); }
输出结果
三丶二维数组
上面讲了一维数组的操作.以及一维数组的简单理解模型(如下图),那么二维数组可以看成一个平面.其实在内存中还是一维数组.不过如果要理解的话内存模型想象成一个平面即可.
1.二维数组的创建
二维数组跟一维数组一样.只不过你是二维的所以需要两个 []运算符
定义:
数组元素类型 数组名称[][];
数组元素类型[][] 数组名称;
内存申请:
数组元素类型[][] 数组名称 = new 数组元素类型[个数][个数];
数组元素类型 数组名称[][] = new 数组元素类型[个数][个数];
第二种方式:定义二维数组.不指定一维数组大小
a = new int[2][]; 一个二维数组. a[0] 跟 a[1]
a[0] = new int[2]; 为a[0] 分为2个一维数组.
a[1] = new int[3]; 为a[1] 分配3个以为数组
内存模型图:
此时 a[0] 跟 a[1] 可以理解为是以为数组首地址.
注意一下使用的时候 new关键字如何使用即可.
二维数组内存模型
代码: a = new int[2][4];
二维数组的大小可以计算出来的. 2 * 4 = 8; 总共8个. 因为是int类型. 所以是 8 * int(4) = 32; 所以所占内存是32个字节;
2 4 的意思就是 分配了两个一维数组. 每个一维数组的大小是4个元素.
所以看下面内存模型图:
2.二维数组初始化
二维数组初始化跟一维数组一样.都是使用大括号进行初始化. 只不过多了两个[][]
语法:
数据元素类型 数组名称[][] = {值,值,值}
语法2
数据元素类型 数组名称[][] = {{值,值},{值,值},{值,值}};
第二种初始化方法.因为我们是二维数组.是一个平面.所以可以理解为需要x y的值. 内部的大括号就是x y 的值.
代码:
int Array1[][] = new int[][] {{1,2},{3,4},{5,6},{7,8},{9,10}}; //定义并且初始化 for (int i = 0; i < Array1.length; i++) { for (int j = 0; j < Array1[i].length; j ++) //注意这里.Array[i]代表的是一维数组. Array[i].length代表的就是一维数组组大小. { System.out.println(Array1[i][j]); } }
四丶数组的基本操作
对于数组来说,我们会定义.还要会使用.
1.遍历数组.
遍历数组一般使用for循环.foreach也可以.
一维数组遍历的两种方式
int Array1[] = new int[]{1,2,3,4,5,6,7,8,9,10}; for (int i = 0; i < Array1.length; i++) { System.out.print(" " + Array1[i]); } System.out.println(" "); for(int s: Array1) { System.out.print(" " + s); } System.out.println(" "); }
输出结果:
注意增强for循环
for (元素数据类型 变量名: 元素变量){};
遍历的时候. 我们的变量名就是元素变量中的值了. 上面第一个循环是 Array[i] 需要用下标. 增强for循环则不用.
二维数组的遍历
int Array1[][] = new int[][]{{1,2},{3,4},{5,6},{7,8},{9,10}}; for (int i = 0; i < Array1.length; i++) { for (int j = 0; j < Array1[i].length;j++) { System.out.print(" " + Array1[i][j]); } } System.out.println(" "); for(int[] A: Array1) { for (int B :A) { System.out.print(" " + B); } } System.out.println(" "); }
二维数组中.第二种遍历方式需要遍历两次, 第一次遍历完毕之后 A变量就相当于一维数组. 然后继续进行一次遍历. 此时B才是数组里面的值.
2.数组的填充
C++中可以使用ZeroMemory或者memset对一块内存按照指定方式填写指定值. 比如常见的就是数组清零了. Java也可以这样做.Java中我们可以使用Arrays类的静态方法
fill(数组[],填充的值) ps:注意是一维数组.
例子:
int Array1[] = new int[]{1,2,3,4,5,6,7,8,9,10}; Arrays.fill(Array1, 0); for(int s:Array1) { System.out.print(s); }
输出结果:
可以看出.输出结果都为0. 填充的值为0就是0. 填充的值为x.值就是x(x是一个数值)
fill函数有很多重载.比如常用的.指定一个范围.进行填充
file(数组[],开始位置,结束位置,填充的值);
int Array1[] = new int[]{1,2,3,4,5,6,7,8,9,10}; //int Array1[][] = new int[][]{{1,2},{3,4},{5,6},{7,8},{9,10}}; Arrays.fill(Array1, 0); Arrays.fill(Array1, 2,9,12); for(int s:Array1) { System.out.print(" " + s); }
首先数组全部清零.然后从下标2开始.结果都赋值为12
输出结果:
3.数组复制
C++中的数组是申请的 内存.可以直接使用内存操作. memmove memcpy一个是进行内存移动.一个是内存拷贝.就能实现内存的赋值.如果用于数组.就可以进行数组拷贝了.
Java中都是Arrays类进行操作数组的.
Arrays中的静态方法 copyOf(数组[],大小) 就可以进行赋值.返回一个新数组
例子:
int Array1[] = new int[]{1,2,3,4,5,6,7,8,9,10}; int Array2[] = Arrays.copyOf(Array1, Array1.length); //int Array1[][] = new int[][]{{1,2},{3,4},{5,6},{7,8},{9,10}}; ; for(int s:Array2) { System.out.print(" " + s); }
4.范围进行数组复制
Arrays还可以支持范围复制
copyOfRange(数组,开始索引,结束索引)
例子:
int Array1[] = new int[]{1,2,3,4,5,6,7,8,9,10}; int Array2[] = Arrays.copyOfRange(Array1, 0,3); //int Array1[][] = new int[][]{{1,2},{3,4},{5,6},{7,8},{9,10}}; ; for(int s:Array2) { System.out.print(" " + s); }
我们复制了三个. 从0开始.所以输出的1 2 3.三个元素的值. 结束索引是多大.那么我们新的数组元素大小就有多大.什么意思
意思就是我们拷贝了3个元素大小. 那么Array2.length 就是3.
内容总结
以上是互联网集市为您收集整理的Java开发知识之Java数组全部内容,希望文章能够帮你解决Java开发知识之Java数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。