【概述】

有时候,我们需要某类的变量,它们是用于表达同一类的东西,但每个个体有不一样,比如学生成绩表的各个成绩

我们不可能为每个学生单独建立一个int变量来表示成绩,此时我们可以创建一个数组,再把每个学生的数据输进去

数组,可以看作一组数的集合————当然不仅限于数,String,char,boolean等也行

【创建数组】

数组的大小代表着数组可以存储多少的数据,最重要的是,数组的大小一旦确定,就不能改变

一般而言,我们声明数组需要说明数组类型,数组名字,以及该数组的大小:

myFirstArray = new int[5];
int[]myFirstArray= new int[5];

上面两行代码的结果是一样的:创建了一个大小为5的int数组

当然,我们也可以在声明数组的时候直接给它赋值:

int[]myFirstArray= {1,1,1,1,1};

需要注意的是,申明到赋值的初始化需要一次性完成,不能分开来

【数组使用】

和String一样,数组也有它的下标且也是从0开始计算。A[i] 代表A数组的第i位所代表的值

比如对于

int[]myFirstArray= {1,4,7,3,11};

myFirstArray[3]的值就是7

遍历数组

利用for循环达到遍历的目的

  int[]myFirstArray= new int[5];
for (int i = 0 ; i <= 4 ; i++){
myFirstArray[i] = 1;
}

上述代码就遍历了数组,并把值赋为1

另外.length可以得到数组的大小,比如上述例中,myFirstArray.length = 5

遍历数组的代码可以模板化为

  int[]A= new int[5];
for (int i = 0 ; i < A.length ; i++){
//注意是 i小于数组的大小,不然会造成越界
A[i] = 1;//当然也可以是其它操作,比如打印
}

【数组方法】

如果数组方法来自Arrays.XX,则需要import java.util.Arrays;

1.复制数组

System.arraycopy(源数组, 复制起始位置(int), 目标数组, 目标数组的起始位置, 复制长度);

int[]arr1 = { 0, 1, 2, 3, 4, 5};
int[]arr2 = { 0, 10, 20, 30, 40, 50};
System.arraycopy(arr1, 0, arr2, 0,6);

Arrays.copyOf(源数组, 复制数目);

double[] arrayOne= { 1.1, 2.2, 3.3, 4.4, 5.5 };
double[] arrayTwo= Arrays.copyOf(arrayOne, arrayOne.length);

Array.clone()

double[] arrayOne= { 1.1, 2.2, 3.3, 4.4, 5.5 };
double[] arrayTwo= arrayOne.clone();

2.其它

Arrays.toString(Arrayname)

Arrays.sort(Arrayname)

Arrays.fill(Arrayname, value_to_fill)

Arrays.equals(Array1, Array2)

Arrays.binarySearch(Arrayname, value_to_search)

【二维数组】

前文我们以及讲述了一维数组————把它当作一个排序的队伍就好了,下面介绍一下二维数组

二维数组有两个重要的变量————行row和列column,二维数组中的数据的排布是有二维性的

创建二维数组

和一维数组一样,不过是把[]增加为[][],表示这是个二维的玩意

int[][] results=newint[7][5];

这里就创建了一个7行5列的数组,也就是在横向上一行最多存储7个数据,纵向上则是5个

另外,也可以一开始就完成初始化

int[][] myArray={{8,1,2,2,9},{1,9,4,0,3},{0,3,0,0,7}};

顺便一提,初始化的时候可以只初始化行,但是不能只初始化列

我们也可以初始化一个非矩形数组

二维数组也是从0开始计算的,且表达的时候是根据“先行后列”(row first, then column)来进行位置确认的

比如上方这个数组(用图表表达了),我们输入

int a = results[6][2]

a得到的值便会是78

遍历二维数组

这里用到了“嵌套循环”,不仅在遍历二维数组,在很多地方这也是很重要的

比如此时我们有一个二维数组board,我们可以这么遍历它

for (int i = 0; i < rows;i++){
for (int j = 0; j < columns; j++){
board[i][j] = "";
}
}

这里的rowscolumns代表的就是行和列的长度,我们可以手动输入,也可以利用方法得到这个值

A.length : 得到A数组行的大小

A[0].length :得到A数组列的大小。实质是得到A数组中的第[0]行包含的元素,我们这里讨论的都是行列值处处相等的数组,所以 A[0].length 得到的就是列的大小

最新文章

  1. JMeter之JMS接口测试
  2. Web服务器常用设置
  3. MMORPG大型游戏设计与开发(客户端架构 part5 of vegine)
  4. 阅读DNA-2014年读书
  5. CA 证书
  6. hadoop 文件系统API操作
  7. 利用命令控制台cmd进入某个硬盘的某个文件夹的命令是什么?
  8. 项目源码--Android迷幻岛屿综合游戏
  9. office 问题集
  10. c# appdomain
  11. docker 指定容器名字
  12. 【原创】leetCodeOj --- Min Stack 解题报告
  13. 使用c#操作txt
  14. 51nod 1058 N的阶乘的长度 位数公式
  15. [SQL] 函数整理(T-SQL 版)
  16. UNIX环境高级编程——标准I/O库函数和Unbuffered I/O函数
  17. 《java入门第一季》之面向对象(代码块一网打尽)
  18. Randomized Online PCA Algorithms with Regret Bounds that are Logarithmic in the Dimension
  19. English trip Spoken English &amp; Word List(updating...)
  20. 简单的dp加贪心

热门文章

  1. The State of JavaScript 2019
  2. 星盟全球投资副总裁DENIEL SOIBIM:如何激发创造力
  3. [转]Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
  4. java安全管理器SecurityManager
  5. list.add(int index, E element)和list.addAll(list1)
  6. 优化程序性能(CSAPP)
  7. ngx_http_image_filter_module使用
  8. 防数据泄露_MySQL库和数据安全
  9. Java并发编程基础三板斧之Semaphore
  10. POJ-3281(最大流+EK算法)