Java中打印数组的三种方式
说明:System.out.println(array);
这样是不行的,这样打印是的是数组的首地址。
Arrays.toString(array);
一维数组
-
定义一个数组:
int[] array = {1, 2, 3, 4, 5};
-
传统的 for 循环:
for(int i=0;i<array.length;i++)
{
System.out.println(a[i]);
} -
for each 增强循环:
for(int a : array)
System.out.println(a); -
利用Array类中的toString方法
int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));
关于for each
for each
语句是java5的新特征之一,在遍历数组、集合方面,for each
为开发人员提供了极大的方便。
for each
语句是for语句的特殊简化版本,但是for each
语句并不能完全取代for
语句,然而,任何的for each
语句都可以改写为for语句版本。
for each
并不是一个关键字,习惯上将这种特殊的for语句格式称之为for each
语句。从英文字面意思理解for each也就是for 每一个
的意思。实际上也就是这个意思。
for each
直接()中声明了arg引用,不需要在代码块中专门声明。int i也不再必要了,for each
会循环到args中无值可取为止。
显然,单纯为了遍历数组或容器对象中的每个元素,for each
比for-index在编码上更合适。在可读性方法,for each
很容易让人知道设计者希望遍历冒号后面对象的全部元素。
String[] args = {"a", "b", "c"};
for (String arg : args) {
System.out.println(arg);
}
哪些类型的对象可以适用for each
- 数组
- Collection类
- 任何实现了Iterable接口的自定义类
(根据面向接口的思想,Deolin习惯把第三类对象称之为“可迭代的”对象)
第一类,第二类在实际开发中经常用到,而第三类能够适用for each
的原因需要通过源码来进行分析。
二维数组
-
对于二维数组也对应这三种方法,定义一个二维数组:
int[] [] magicSquare =
{
{16,3,2,13},
{5,10,11,8},
{9,6,7,3}
};
-
传统的for循环方式
for(int i=0;i<magicSquare.length;i++)
{
for(int j=0;j<magicSquare[i].length;j++)
{
System.out.print(magicSquare[i][j]+" ");
}
System.out.println(); //换行
} -
for each 增强循环
for(int[] a:magicSquare)
{
for(int b:a)
{
System.out.print(b+" ");
}
System.out.println();//换行
} -
利用Array类中的toString方法
for(int i=0;i<magicSquare.length;i++)
System.out.println(Arrays.toString(magicSquare[i]));