-
2020-09-18 00:32:30
Java二维数组
Java 语言中提供的数组是用来存储固定大小的同类型元素。
1.二维数组初始化和声明
数组变量的声明,和创建数组可以用一条语句完成,如下所示:int a[][] = new int[2][3];
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
2.二维数组遍历
//遍历二维数组 public class Traverse_a_two_dimensional_array { public static void main(String[] args) { int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};//静态创建 //遍历数组的第一个方法 for(int i = 0;i < arr.length;i++){ //遍历arr[0],arr中元素第一个数组 for(int j = 0;j < arr[i].length;j++){ System.out.print(arr[i][j]); } } } }
public class Traverse_a_two_dimensional_array { public static void main(String[] args) { // TODO Auto-generated method stub int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};//静态创建 //遍历数组的第二个方法 for (int[] is : arr) { for (int i : is) { System.out.print(i); } } } }
3.Arrays 类(暂时还不会用)
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。ArrayList 类
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。
初始化:
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<String> sites = new ArrayList<>(); // 创建一个动态数组
添加元素:
添加元素到 ArrayList 可以使用 add() 方法:sites.add("Runoob");
ArrayList初始化赋值的三种方式
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2);
List<Integer> list = new ArrayList<>(Arrays.toList(1,2,3));
List<Integer> lsit = new ArrayList<>(){
List<Integer> lsit = new ArrayList<Integer>(){ { add(1); add(2); } };
删除元素:
删除 ArrayList 中的元素可以使用 remove() 方法:sites.remove(3); // 删除第四个元素
计算大小:
计算 ArrayList 中的元素数量可以使用 size() 方法:System.out.println(sites.size());
ArrayList 排序:
Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
sort() 方法根据指定的顺序对动态数组中的元素进行排序。
sort() 方法的语法为:
注:arraylist 是 ArrayList 类的一个对象。
arraylist.sort(Comparator c) comparator - 顺序方式import java.util.Comparator; // 降序 sites.sort(Comparator.reverseOrder());
更多相关内容 -
java二维数组遍历的2种代码
2020-08-25 20:38:54主要介绍了java二维数组遍历的2种代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Java二维数组简单定义与使用方法示例
2020-08-29 04:13:51主要介绍了Java二维数组简单定义与使用方法,结合实例形式简单分析了java二维数组的定义、使用方法及相关注意事项,需要的朋友可以参考下 -
Java二维数组计算集合总结
2020-08-27 23:13:04本篇文章给大家整理了关于Java二维数组计算集合的内容总结,有需要的读者们可以参考下。 -
Java编程一维数组转换成二维数组实例代码
2020-08-28 04:44:13主要介绍了Java编程一维数组转换成二维数组,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下 -
Java二维数组查找功能代码实现
2020-08-19 02:30:12主要介绍了Java二维数组查找功能代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
java实现二维数组转json的方法示例
2020-10-19 03:22:07主要介绍了java实现二维数组转json的方法,涉及java数组遍历及json格式数据构造相关操作技巧,需要的朋友可以参考下 -
java 二维数组 随机生成迷宫
2020-10-20 09:46:26使用二维数组随机生成迷宫,里面总共有三份代码,都是迷宫生成的,相信有一份是适合你的。直接运行main方法就可运行,简单方便。 -
java 二维数组和对象数组
2021-03-04 06:08:281.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化1) int intA[][]={{1,2},{2,3},{3,4,5}};2) int [][] intB=new int[3][5];3) int []intC []=new int[3][];intC[0]=new int[2];intC[1...1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组
2.二维数组的初始化
1) int intA[][]={{1,2},{2,3},{3,4,5}};
2) int [][] intB=new int[3][5];
3) int []intC []=new int[3][];
intC[0]=new int[2];
intC[1]=new int[3];
intC[2]=new int[5];
1 public classTestArray2 {2 public static voidmain(String[] args) {3 //二维数组不是规则的矩阵
4 int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};5 System.out.println(intA);//[[I@5e265ba4 两个[[表示是二维的 I表示数组是int型 @5e265ba4是内存地址6
7 //声明一一个二维数组,用于存储3个一维数组,每一个一维数据存多少个数组,不知道 ,null
8 int [][]intB=new int[3][];9 intB[0]=new int[3]; //3
10 intB[1]=new int[]{1,2,3,4}; //3
11 intB[2]=new int[2]; //2
12 System.out.println(intB[1]);//[I@156643d4
13 System.out.println(intB[1][1]);//214
15 //声明一个二维数组,同时创建出一维数组,每个一维数组的长度均相同16 //存储三个一维数组,每个一维数组的长度为4
17 int []intC[]=new int[3][4];18 System.out.println(intC);19
20 }21 }
3.二维数组的遍历
1) 普通 for 循环
2) 加强 for 循环
3) 普通 for 循环+加强 for 循环
public classTestArray3 {public static voidmain(String[] args) {//二维数组
int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};//(1)普通for循环
for(int i=0;i
for(int j=0;j
System.out.print(intA[i][j]+"\t");
}
System.out.println();
}//(2)加强for循环
System.out.println("\n=========================");for(int[] arr:intA){ //int[]二维数组中元素的类型, arr迭代变量, intA二维组的名称
for(int i:arr){ //int,一维数组中元素的类型,i,迭代变量,arr,一维数组的名称
System.out.print(i+"\t");
}
System.out.println();
}//(3)普通与加强for循环的混搭
System.out.println("\n-------------------------");for(int [] arr:intA){//加强for
for(int i=0;i
System.out.print(arr[i]+"\t");
}
System.out.println();
}
System.out.println("\n--------------------------");for(int i=0;i
System.out.print(j+"\t");
}
System.out.println();
}
}
}
View Code
4.对象数组存储表格数据
张三 19 男
李四 20 女
王五 28 男
数组存基本数据类型,也可以存引用数据类型
对象数组:使用数组存储对象(自定义对象)
public classPerson {private String name;//姓名
private int age;//年龄
private String gender;//性别//重写toString以打印想要的输出 否则只会打印对象的内存地址
@OverridepublicString toString() {//TODO Auto-generated method stub
return name+"\t"+age+"\t"+gender;//}public Person(String name, intage, String gender) {super();this.name =name;this.age =age;this.gender =gender;
}publicPerson() {super();
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}publicString getGender() {returngender;
}public voidsetGender(String gender) {this.gender =gender;
}
View Code
1 public classTestArray {2 public static voidmain(String[] args) {3 //创建一个Person类型的数组,用于存储3个Person类型的对象
4 Person [] pers=new Person[3];5 //创建Person类型的对象
6 Person p1=new Person("张三", 19, "男");7 //将p1对象存储到Person类型的数组中
8 pers[0]=p1;9
10 pers[1]=new Person("李四", 20, "女");11 pers[2]=new Person("王五",28,"男");12
13 for(int i=0;i
17 }18 }
5.数组拷贝
地址的拷贝
int[]array={11,22,33,44};
int[] arrayB=new int[5];
arrayB=array //两个数组指向同一内存
值的拷贝
int[]array={11,22,33,44};
int[] arrayB=new int[5];
arrayB[0]=array[0];
System 类中的 arraycopy(…)方法:快速,数组大时用次方法。
1 public classTestArrayCopy3 {2 public static voidmain(String[] args) {3 int [] arrA={11,22,33,44};//源数组
4 int [] arrB=new int[5];//目标数组
5
6 System.out.println("数组拷贝之前");7 for(intnum:arrB){8 System.out.print(num+"\t");9 }10 //0 0 0 0 011 //拷贝
12 System.arraycopy(arrA, 0, arrB, 1, 2);13
14 System.out.println("\n数组拷贝之后");15 for(intnum:arrB){16 System.out.print(num+"\t");17 }18 //0 11 22 0 0
19 }20 }
-
Java不指定长度的二维数组实例
2020-08-27 04:29:56今天小编就为大家分享一篇Java不指定长度的二维数组实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Java二维数组实现简单Map
2019-07-31 05:25:27NULL 博文链接:https://liangjian103.iteye.com/blog/1101210 -
java 求解二维数组列最小值
2020-08-30 12:37:10主要介绍了java 求解二维数组列最小值的相关资料,需要的朋友可以参考下 -
Java二维数组实战案例
2020-08-25 16:53:46主要介绍了Java二维数组,结合具体案例形式分析了java二维数组定义、遍历、计算等相关操作技巧,需要的朋友可以参考下 -
java实现二维数组转置的方法示例
2020-08-29 04:17:47主要介绍了java实现二维数组转置的方法,结合实例形式详细分析了java二维数组转置的原理、实现步骤与相关操作技巧,需要的朋友可以参考下 -
Java编程中二维数组的初始化和基本操作实例
2020-09-03 05:51:51主要介绍了Java编程中二维数组的初始化和基本操作实例,是Java入门学习中的基础知识,需要的朋友可以参考下 -
java 二维数组矩阵乘法的实现方法
2020-09-05 13:04:32java 二维数组矩阵乘法的实现方法,需要的朋友可以参考一下 -
java String 转成Double二维数组的方法
2020-09-01 10:59:37下面小编就为大家带来一篇java String 转成Double二维数组的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
java一维数组二维数组
2018-12-17 19:42:50Java数组相关资料,部分题目。有兴趣的同学可以了解一下 -
java代码-JAVA中String数组初始化,一维数组和二维数组初始化
2021-07-15 04:39:34java代码-JAVA中String数组初始化,一维数组和二维数组初始化 -
c语言二维数组和java二维数组的两大区别
2020-08-07 10:54:30c语言二维数组和java二维数组的两大区别 1. 存储方式不同 直接开门见山 c语言: c语言里面的的二维数组存在栈空间中。 java: java里面的二维数组存在堆空间中。 2. 第二维不同 c语言: c语言里面的二维数组的第二... -
Java一维数组和二维数组详解(Java必备知识)
2021-03-01 07:42:19目录一维数组创建一维数组给一维数组赋值获取数组的长度常见错误二维数组创建二维数组给二维数组赋值二维数组的使用场景多维数组不规则数组数组的基本操作遍历数组填充和批量替换数组元素难点解答为什么数组索引从0...数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组。是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列。
目录
一维数组
创建一维数组
给一维数组赋值
获取数组的长度
常见错误
二维数组
创建二维数组
给二维数组赋值
二维数组的使用场景
多维数组
不规则数组
数组的基本操作
遍历数组
填充和批量替换数组元素
难点解答
为什么数组索引从0开始?
多维数组的长度
一维数组
数组元素的数据类型决定了数组的数据类型,可以是基本数据类型和其他引用类型。符号 “[ ]” 指明该变量是一个数组类型变量。单个 “[ ]” 表示是一维数组。
创建一维数组
声明一维数组有两种方式:
数组元素类型 数组名字[];
int a[];
数组元素类型[] 数组名字;
int[] b;
声明数组后,还不能访问他的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,并未分配内存空间。
在声明数组的时候可以为数组分配内存空间,这种就是将声明和内存分配在一起执行。
数组元素类型 数组名 = new 数组元素类型[数组元素的个数];
int month[] = new int[12];
给一维数组赋值
数组可以与基本数据类型一样进行初始化操作,也就是赋初值,数组的初始化可分别初始化数组中的每一个元素。
数组的初始化有以下3种形式:
int a[] = {1,2,3}; // 第一种方式
int[] b = new int[]{4,5,6}; // 第二种方式
int c[] = new int[3]; // 第三种方式
c[0] = 7;// 第一个元素赋值
c[1] = 8;// 第二个元素赋值
c[2] = 9;// 第三个元素赋值
获取数组的长度
有时候数组分配空间我们没有指明这个时候就可以通过arr.lenth来获取长度。
int a[] = {1,2,3};
System.out.println(a.length);
常见错误
二维数组
二维数组常用于表示二维表,第一个元素代表元素所在的行,第二个下标代表元素所在的列。
创建二维数组
声明二维数组有两种方式:
数组元素类型 数组名字[][];
int tdarr1[][];
数组元素类型[ ][ ] 数组名字;
int[][] tdarr2;
和一维数组一样,二维数组在声明的时候没有分配内存空间,同样要使用new关键字来分配内存 ,然后才可以访问元素。
分配内存有两种方式:
int a[][];
a = new int[2][3];// 直接分配行列
int b[][];
b = new int[2][];// 先分配行,不分配列
b[0] = new int[2];// 给第一行分配列
b[1] = new int[2];// 给第二行分配列
注意:创建二维数组可以只声明行的长度,而不声明列的长度。行的长度是必须得声明的!!!
给二维数组赋值
int tdarr1[][] = {{1,3,5},{4,6,7}}; // 第一种方式
int tdarr2[][] = new int[][] {{1,3,5},{4,6,7}}; // 第二种方式
int tdarr3[][] = new int[2][3];// 第三种方式
tdarr3[0] = new int[] {1,2,3};// 给第一行分配一个一维数组
tdarr3[1][0] = 63;// 给第二行第一列赋值为63
tdarr3[1][0] = 10;// 给第二行第一列赋值为10
tdarr3[1][0] = 7;// 给第二行第一列赋值为7
从这个例子可以看出,二维数组每一个元素也是一个数组,所以第一种直接赋值方式,在大括号内还有大括号,因为每一个元素都是一个一维数组;第二种使用new的方法与一维数组相似。第三种比较特殊,在分配内存空间后,还有两种赋值方式,给某一行直接赋值一个一维数组,或者给某一行的每一个元素分别赋值。
二维数组的使用场景
public static void main(String[] args) {
char arr[][] = new char[4][];// 创建二维数组,数组长度(行)为4
arr[0] = new char[] { '春', '眠', '不', '觉', '晓' };// 为每一行赋值
arr[1] = new char[] { '处', '处', '闻', '啼', '鸟' };
arr[2] = new char[] { '夜', '来', '风', '雨', '声' };
arr[3] = new char[] { '花', '落', '知', '多', '少' };
System.out.println("---横版---");
for (int i = 0; i < 4; i++) {// 循环4行
for (int j = 0; j < 5; j++) {// 循环5列
System.out.print(arr[i][j]);// 输出数组中的元素
}
if (i % 2 == 0) {
System.out.print(",");// 如果是1,3句输出逗号
} else {
System.out.print("。");// 如果是2,4句输出句号
}
// i行结束则换行(注意在哪个循环内执行)
System.out.println();
}
System.out.println();
System.out.println("---竖版---");
for (int j = 0; j < 5; j++) {// 列变行
for (int i = 3; i >= 0; i--) {// 行变列,反序输出
System.out.print(arr[i][j]);// 输出数组中的元素
}
System.out.println();// 换行
}
// 第5行单独输出标点符号
System.out.println("。,。,");// 输出最后的标点
}
运行效果:
多维数组
比一维数组维数高的叫多维数组,理论上二维数组也属于多维数组,Java也支持三维数组,四维等多维数组。创建其他多维数组的方法与二维数组类似。
int a1[][][] = new int[3][4][5];// 创建三维数组
char b1[][][][] = new char[6][7][8][9];// 创建四维数组
不规则数组
java中支持不规则数组,例如二维数组中,不同行的元素个数可以不同:
int a[][] = new int[3][];// 创建二维数组,指定行数,不指定列数
a[0] = new int[5];// 第一行分配5个元素
a[1] = new int[3];// 第二行分配3个元素
a[2] = new int[4];// 第三行分配4个元素
输出不规则二维数组中的所有元素代码示例:
public static void main(String[] args) {
int a[][] = new int[3][];// 创建二维数组,指定行数,不指定列数
a[0] = new int[] {52,64,85,12,3,64};// 第一行分配6个元素
a[1] = new int[] {41,99,2};// 第二行分配3个元素
a[2] = new int[] {285,61,278,2};// 第三行分配4个元素
for (int i = 0; i < a.length; i++) {
System.out.print("a[" + i +"]中有" + a[i].length + "个元素,分别是:");
for (int tmp : a[i]) {//foreach循环输出元素
System.out.print(tmp + " ");
}
System.out.println();
}
}
输出结果:
数组的基本操作
遍历一维数组很简单,也很好理解,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。
遍历数组
代码示例:
public static void main(String[] args) {
int b[][] = new int[][] {{1},{2,3},{4,5,6}}; // 定义二维数组
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
System.out.print(b[i][j]);
}
System.out.println();
}
}
输出结果:
本语法有一个语法需要掌握:如果有一个二维数组a[][],a.length返回的是数组的行数,a[0].length返回的是第一行的列数量。同理,a[n]返回的是第n+1行的列数量,由于二维数组可能是不规则数组,因此在遍历二维数组的时候最好使用length属性控制循环次数。
填充和批量替换数组元素
数组中的元素定义完成后,可通过Arrays类的静态方法fill()方法来对数组中的元素进行分配,起到填充和替换的效果,fill()方法可以将制定的int值分配给int型数组的每个元素。
语法如下:
Array.fill(int[] a , int value)
a:要进行元素分配的数组
value:要存储数组中所有元素的值
代码示例:
public static void main(String[] args) {
int arr[] = new int[5];
arr[0] = 9;
Arrays.fill(arr, 8);
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + i + "个元素是: " + arr[i]);
}
}
输出结果:
难点解答
为什么数组索引从0开始?
这是继承了汇编语言的传统,从0开始便于计算机做二进制运算和查找。
多维数组的长度
length属性只能表示一个一维数组的长度,二维数组使用的时候其实是将二维数组转为了 “一维数组[一维数组]” 的形式,即一维数组元素仍然是一个一维数组。
-
java二维数组
2014-05-12 11:10:55这是我个人原创的,根据一些题目自己写的代码,和大家分享一下 -
浅谈javascript和java中的数组
2021-01-20 03:39:32javascript中的数组 数组的创建 直接创建方式 var ... 二维数组(多维)创建方式:var a = new Array([1,2,3], [4,5,6], [7,8,9]); var b = [[1,2,3], [4,5,6], [7,8,9]]; 创建数组注意 -
Java中增强for循环在一维数组和二维数组中的使用方法
2020-09-01 12:36:23下面小编就为大家带来一篇Java中增强for循环在一维数组和二维数组中的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
二维数组中的查找
2019-08-06 12:44:48二维数组中的查找,逐行扫描,行内使用二分查找。最差情况需要扫描所有行,待完善 -
二维数组小练习
2019-02-20 14:52:22二维数组小练习~ -
Java中一维二维数组的静态和动态初始化
2020-08-29 02:38:47今天通过本文给大家分享Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化问题,感兴趣的朋友一起看看吧 -
Java 二维数组
2021-02-26 08:43:58二维数组的定义二维数组本质上是以数组作为数组元素的数组,即“数组... //定义a为3行4列的数组二维数组的声明和初始化二维数组的声明、初始化和引用与一维数组相似。当使用new来创建二维数组时,不必指定每一维的... -
Java一维数组二维数组详解API
2021-02-27 11:42:09所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的...数组是用于储存多个相同类型数据的集合,数组有一维数组,二维数组,...