java date20150820
来源:互联网 发布:ansys软件报价 编辑:程序博客网 时间:2024/04/29 23:14
回顾:数组是具体相同数据类型的变量的集合;前面主要讲了一维数组,以及一维数组的声明和空间开辟,
一维数组的定义格式;一位数组初始化格式;一维数组元素的访问方式;length实例变量的使用;数组的深入使用:数组的
拷贝(浅拷贝和深拷贝);数组的排序(冒泡排序)
本节主要学习点:
二维数组、多维数组
--------------------------------------------------------------------------------------------------------------
一、二维数组
为什么需要二维数组?
因为一维数组只够存相同数据类型的变量,但是有一些数据是由行列矩阵组成,那二维数组就是可以满足这些条件
二维数组定义:
是由多个一维数组组成的相同数据类型的变量的集合;
二维数组也分为两部分:
1、数组的声明;
声明格式: 数据类型[][] 数组名 ;
2、开辟空间;
格式:new 数据类型[行数][列数];
注:行数、列数表示的就是这个二维数组数据由几行几列组成的;
行数:也表示的这个二维数组有多少个一维数组组成;
列数:表示的这个二维数组中每个一维数组是由多少个元素组成的;
二维数组格式如下:
数据类型[][] 数组名 = new 数据类型[行数][列数];
二维数组初始化格式如下:
数据类型[][] 数组名 = {
{ },
{ },
...
}
二维数组的元素的访问:
数组名[行数下标][列数下标];
注:行数下标即一维数组下标,因为下标都是从0开始的,所以其下标范围[0,数组名.length-1]或[0,数组名.length);
列数下标即一维数组下每个元素的下标,也因为下标都是从0开始的,所以其下标范围[0,数组名[行数下标].length-1]
或[0,数组名[行数下标].length);
例:
public class Demo2 {
public static void main(String[] args) {
// 创建一个二维int型数组
// int[][] array1 = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 },
// { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },
// { 21, 22, 23, 24, 25 }, };
// 另一种创建方式
int[][] array1 = new int[5][5];
int k = 1;
System.out.println("输出数组array1:");
//利用双重循环访问数组
for (int i = 0; i < array1.length; i++) { //定义行数的下标
for (int j = 0; j < array1[i].length; j++) { //定义列数的下标
array1[i][j] = k++; //访问二维数组的元素需执行满足条件的循环语句
System.out.print(array1[i][j] + " ");
}
System.out.println();
}
}
}
输出结果:
输出数组array1:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
----------------------------------------------------------------------------------------------------------------
二、不规则数组
不规则数组定义:
Java中多维数组实质上都是一维数组,每个数组的数组元素个数即每个数组的数组大小是可以不同的,即
是不规则数组;注:不规则数组的行数在数组声明时必须确定,列数可以再确定;
例: int[][] array2 = new int[4][];
array2[0] = new int[1];
array2[1] = new int[2];
array2[2] = new int[3];
array2[3] = new int[4];
含义:在array2二维数组中声明时首先确定了它的行数,即是由4个一维数组组成的二维数组,但其列数未确定;
后确定各行的列数即是确定各个一维数组的元素个数,第一个一维数组中有1个元素,第二个中有2个元素,
第三个中有3个元素,第四个一维数组中有4个元素;这个数组是一个不规则的二维数组;
例1:
public class Demo3 {
public static void main(String[] args) {
// 创建一个不规则的二维数组
int[][] array2 = new int[4][];
// 指定各行的列数
array2[0] = new int[1];
array2[1] = new int[2];
array2[2] = new int[3];
array2[3] = new int[4];
int k = 1;
// 利用双重循环访问数组,对数组元素进行赋值
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
array2[i][j] = k++;
System.out.print(array2[i][j] + " ");
}
System.out.println();
}
}
}
输出结果:
1
2 3
4 5 6
7 8 9 10
例2:用数组算银行各种利率增长情况
------------------------------------------------------------------------------------------------------
三、for...each循环语句
它是for循环的一种缩写形式,for...each主要用在集合(或数组)中,从开始到结束循环;
for...each循环的一般使用,其一般格式如下:
for(数据类型 变量 :集合){
语句块;
}
其数据类型表示的是集合的数据类型,接着是一个元素用于进行操作,它代表当前集合访问的元素,最后是要访问的集合;
for...each循环访问一维数组的使用格式如下:
int[] array1 = {1,2,3,4,5};
int sum = 0;
for(int i=0;i<array.length;i++)
sum += array1[i];
System.out.println(array[i]);
用for...each的格式如下:
int[] array1 = {1,2,3,4,5};
int sum = 0;
for(int iVal : array1)
sum += iVal;
System.out.println(iVal);
例:
public class Demo6 {
public static void main(String[] args) {
int[] array1 = { 1, 2, 3, 4, 5, 6 };
int iSum = 0;
for (int iVal : array1) {
iSum += iVal;
System.out.print(iVal + " ");
}
}
}
输出结果:
1 2 3 4 5 6
for...each循环是可以访问多维数组的
for...each循环访问多维数组的使用格式如下:
int[][] array2 = new int[5][5];
int sum = 0;
for(int x[] : array2)
for(int y : x)
sum += y;
System.out.println(y);
例1:public class Demo6 {
public static void main(String[] args) {
int[][] array2 = { { 1, 3, 5 }, { 2, 4, 6 }, };
for (int x[] : array2) {
for (int y : x) {
System.out.print(y+" ");
}
}
}
}
输出结果:
1 3 5 2 4 6
例2:
public class Demo6 {
public static void main(String[] args) {
int k = 1;
int[][] array2 = new int[5][5];
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
array2[i][j] = k++;
}
}
for (int x[] : array2) {
for (int y : x) {
System.out.print(y + " ");
}
System.out.println();
}
}
}
输出结果:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
- java date20150820
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- JAVA?
- struts2-ajax-页面的自动刷新
- 使用ngrok作为外网映射工具
- Memcahce和Redis比较
- 146. LRU Cache
- gdoi 8.20模拟总结
- java date20150820
- 近几天小结
- 归并排序
- 欢迎使用CSDN-markdown编辑器
- java date20150819
- JAVA基本数据类型
- 日志处理(文件的读出和写入)
- 构造函数和析构函数的调用过程
- Protocol - 5