使用显示数组 for,for-each,和toString

  • 题目描述
    • 1.for循环遍历
      • 程序:
      • 运行结果:
    • 2.foreach语句遍历
      • 语法格式:
        • 注:
        • 运行结果:
      • 程序:
      • 运行结果:
    • 3.Arrays工具类中toString静态方法遍历
      • 3.1.程序:
        • 运行结果:
        • 注释:
      • 3.2.Arrays.deepToString()与Arrays.toString()的区别
        • - 示例:
        • - 结果:
      • 3.3.Arrays 类
      • 3.4. Java中对Array数组的常用操作
        • 示例:
        • 打印结果:

题目描述

给一个数组:

 int Arr[][]={{5,7,15},{8,4,11},{3,6,13}};

使用显示数组 for,for-each,和toString

1.for循环遍历

通常遍历数组都是使用for循环来实现。遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。

程序:

package 数组;
public class for遍历二维数组 {public static void main(String[] args) {// TODO Auto-generated method stubint Arr[][]={{5,7,15},{8,4,11},{3,6,13}};for (int i = 0; i < Arr.length; i++) {for (int j = 0; j < Arr[i].length; j++) {System.out.print(Arr[i][j]+" ");}}}
}

运行结果:

5 7 15 8 4 11 3 6 13

for循环本质就是把数组中的每个数据打印出来。

2.foreach语句遍历

遍历数组就是获取数组的每个元素。通常遍历数组都是使用for循环来实现的,但是for循环不够简洁,下面我们简要介绍一下使用foreach语句来实现遍历数组的方法。
java5之后,Java提供了一种更简洁的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组时,无须获得数组和集合长度,无须根据索(下标)引来访问数组元素,foreach循环自动遍历数组和集合的每一个元素。

语法格式:

for(type element: array)
{System.out.println(element);
}

注:

foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。
因此不要对foreach的循环变量赋值。
例如:

public static void main(String [] args){int [] arr={1,2,3,4,5};for(int a:arr){a=0;System.out.print(a);}System.out.print(“\n”+a[0]);
}

运行结果:

00000
1

从上面结果可以看出,由于在foreach循环中对数组进行赋值,结果导致不能正确遍历数组元素。而且当再次访问第一个数组元素时,发现数组元素依然没有改变。

程序:

package 数组;
public class foreach遍历二维数组 {public static void main(String[] args) {// TODO Auto-generated method stubint Arr[][]= {{5,7,15},{8,4,11},{3,6,13}};System.out.println("数组中的元素是 ");int i=0;for(int x[]: Arr) {//行i++;int j=0;for(int e:x) {//列j++;if(i==Arr.length&&j==x.length) {System.out.print(e);//输出最后一个元素,后面不加逗号}elseSystem.out.print(e+"、");}}       }
}

运行结果:

数组中的元素是
5、7、15、8、4、11、3、6、13

3.Arrays工具类中toString静态方法遍历

利用Arrays工具类中的toString静态方法可以将一维数组转化为字符串形式并输出。
已知打印一维数组的API为System.out.println ( Arrays.toString ();,其参数为数组名或数组指针,其支持的数据类型有很多,如:int[]、char[]、byte[]等。

3.1.程序:

package 数组;import java.util.Arrays;public class toString遍历二维数组 {public static void main(String[] args) {// TODO Auto-generated method stubint Arr[][]={{5,7,15},{8,4,11},{3,6,13}};System.out.println("Arr:"+Arrays.toString(Arr));int b[][]={{5,7,15},{8,4,11},{3,6,13}};System.out.println("Arr:"+Arrays.deepToString(b));}
}

运行结果:

Arr:[[I@15db9742, [I@6d06d69c, [I@7852e922]
Arr:[[5, 7, 15], [8, 4,11], [3, 6, 13]]

注释:

注: *Arr:[[I@15db9742, [I@6d06d69c, [I@7852e922]*
这种输出结果是因为:Arr是一个二维数组。相当于一个长度为3的数组,但是这个数组的元素还是是数组。
当执行Arrays.toString的时候相当于遍历数组,并且输出数组的元素,但是这个数组的元素是数组,所以这里输出的是数组元素的地址。

3.2.Arrays.deepToString()与Arrays.toString()的区别

  • Arrays.deepToString()主要用于数组中还有数组的情况,而Arrays.toString()则相反,对于Arrays.toString()而言,当数组中有数组时,不会打印出数组中的内容,只会以地址的形式打印出来。

- 示例:

public class test {public static void main(String[] args) {int a[] = {1, 2, 3};System.out.println(Arrays.toString(a));int b[][] = {{1, 2, 3}, {4, 5, 6}};System.out.println(Arrays.toString(b));System.out.println(Arrays.deepToString(b));}
}

- 结果:

[1, 2, 3]
[[I@14ae5a5, [I@7f31245a]
[[1, 2, 3], [4, 5, 6]]

3.3.Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  1. 给数组赋值:通过 fill 方法。
  2. 对数组排序:通过 sort 方法,按升序。
  3. 比较数组:通过 equals 方法比较数组中元素值是否相等。
  4. 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
    具体说明请查看下表:
序号 方法和说明
1 ***public static int binarySearch(Object[] a, Object key)***用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2 ***public static boolean equals(long[] a, long[] a2)***如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3 ***public static void fill(int[] a, int val)***将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4 ***public static void sort(Object[] a)***对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

3.4. Java中对Array数组的常用操作

示例:

import java.util.*;
public class ArrayPrint {public static void main(String[] args){//声明数组String [] arr;int arr1[];//初始化数组int arr2[]=new int[]{1,2,3,4,5};String[] array1={"马超","马云","关羽","刘备","张飞"};String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};      String[] array=new String[5];//查看数组的长度int length=array1.length;System.out.println("length:  "+array1.length);//输出数组System.out.println(array1);     //结果:[Ljava.lang.String;@32f22097System.out.println("arr2:  "+Arrays.toString(arr2));//遍历数组for (int i = 0; i < array1.length; i++) {System.out.println(array1[i]);}//int数组转成string数组int[]  array3={1,2,3,4,5,6,7,8,9,0};String arrStrings=Arrays.toString(array3);System.out.println("arrStrings:"+arrStrings);//从array中创建arraylistArrayList <String> arrayList=new ArrayList<String>(Arrays.asList(array1));System.out.println("arrayList:"+arrayList);//数组中是否包含某一个值String a="马超";if (Arrays.asList(array1).contains(a)) {System.out.println("马超在这里");}//将数组转成set集合Set<String> set=new HashSet<String>(Arrays.asList(array2));System.out.println("set:"+set);//将数组转成list集合List<String> list_1=new ArrayList<String>();for (int i = 0; i < array2.length; i++) {list_1.add(array2[i]);}System.out.println("list_1:"+list_1);String[] arrStrings2={"1","2","3"};List<String > list2=Arrays.asList(arrStrings2);System.out.println("list2:"+list2);//Arrays.fill()填充数组int[] arr3=new int[5];Arrays.fill(arr3, 10);  //将数组全部填充10System.out.println("arr3:"+arr3);for (int i = 0; i < arr3.length; i++) {System.out.println("arr3[i]:"+arr3[i]);}//数组排序int[] arr4 = {3, 7, 2, 1, 9};Arrays.sort(arr4);System.out.println("arr4:"+arr4);for (int i = 0; i < arr4.length; i++) {System.out.println("arr4[i]:"+arr4[i]);}int[] arr5 = {3, 7, 2, 1, 9,3,45,7,8,8,3,2,65,34,5};Arrays.sort(arr5, 1, 4);  //从第几个到第几个之间的进行排序for (int i = 0; i < arr5.length; i++) {System.out.println("arr5[i]:"+arr5[i]);}//复制数组int[] arr6 = {3, 7, 2, 1};int[] arr7=Arrays.copyOf(arr6, 10);  //指定新数组的长度int[] arr8=Arrays.copyOfRange(arr6, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)for (int i = 0; i < arr8.length; i++) {System.out.println(arr8[i]);}//比较两个数组int[] arr9 = {1, 2, 3, 4,5,6,7,8,9,0};boolean arr10=Arrays.equals(arr6, arr9);System.out.println(arr10);//去重复//利用set的特性int[] arr11 = {1, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};Set<Integer> set2=new HashSet<Integer>();for (int i = 0; i < arr11.length; i++) {set2.add(arr11[i]);}System.out.println(set2);int[] arr12 = new int[set2.size()];int j=0;for (Integer i:set2) {arr12[j++]=i;}System.out.println(Arrays.toString(arr12));
}
}

打印结果:

打印结果:
length:  5
[Ljava.lang.String;@7852e922
arr2:  [1, 2, 3, 4, 5]
马超
马云
关羽
刘备
张飞
arrStrings:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
arrayList:[马超, 马云, 关羽, 刘备, 张飞]
马超在这里
set:[小猪, 牙哥, 黄渤, 黄磊, 孙红雷, 张艺兴]
list_1:[黄渤, 张艺兴, 孙红雷, 小猪, 牙哥, 黄磊]
list2:[1, 2, 3]
arr3:[I@4e25154f
arr3[i]:10
arr3[i]:10
arr3[i]:10
arr3[i]:10
arr3[i]:10
arr4:[I@70dea4e
arr4[i]:1
arr4[i]:2
arr4[i]:3
arr4[i]:7
arr4[i]:9
arr5[i]:3
arr5[i]:1
arr5[i]:2
arr5[i]:7
arr5[i]:9
arr5[i]:3
arr5[i]:45
arr5[i]:7
arr5[i]:8
arr5[i]:8
arr5[i]:3
arr5[i]:2
arr5[i]:65
arr5[i]:34
arr5[i]:5
7
2
false
[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]

答疑资料qq群:1007576722

java中数组遍历的三种方式相关推荐

  1. java中Map遍历的三种方式

    Java中Map遍历的三种方式 前言 一:在for循环中使用entries实现Map的遍历: 二:在for循环中遍历key或者values,一般适用于只需要map中的key或者value时使用,在性能 ...

  2. Java中数组赋值的三种方式

    推荐第一种: public class ArrayTest{public static void main(String args[]){// 1int[] a=new int[4];a[0]=1;a ...

  3. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  4. java中Map遍历的四种方式

    java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...

  5. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  6. Java中实现接口的三种方式您造吗?

    本文介绍了Java中实现接口的三种方式:常规实现方式.匿名内部类和 Lambda表达式实现方式.希望已经了解的同学可以重新温习一下,不了解的同学则从中受益! Java中接口最常规的实现方式 同学们都会 ...

  7. java中实现多线程的三种方式

    java中实现多线程的三种方式 1.实现多线程的方法: 在java中实现多线程的两途径:继承Thread类,实现Runable接口(Callable) 2.继承Thread类实现多线程: ​ 继承类T ...

  8. php中数组遍历的四种方式

    首先要讲一点的是:PHP中的数组与C/C++中的数组不同. 它是基于键值对结构的hash表来实现的(存在key/value的概念).有点类似于python和lua中的dictionary. 在没有显示 ...

  9. Java中创建线程的三种方式

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)继承Thread类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. ...

最新文章

  1. springmvc基础入门,你确定你真的理解_双亲委派_了吗?
  2. Java字符串的10大热点问题盘点
  3. VS代码提示不出现或者提示变成英文或者各种奇葩问题的解决
  4. java nio 文件_Java nio 的文件处理
  5. 数据结构 【实验7 二叉树基本操作】
  6. 关于“绞刑架和职业发展”问题带来的思考
  7. 安装完wps去除右键新建中的wps等文档
  8. Atitit 函数式编程与命令行语言的区别与优缺点 目录 1. 常见的函数式语言 2 1.1. 命令行 bat 2 1.2. Sql h5 css 正则表达式 2 1.3. 工作流语言 anno注
  9. php strictbool,PHP 7 Bool类型提示不起作用
  10. 金蝶k3服务器系统要求,金蝶k3要求服务器配置
  11. 中兴c语言 面试题,中兴手机嵌入式开发面试题汇总(1)
  12. 智伴机器人安卓怎么设置个人热点_智伴机器人怎么联网?看这个联网视频教程...
  13. 【唐老狮】Unity和UE4两大游戏引擎,你该如何选择?
  14. u3d 用php当后端,协成方法的使用 Coroutine
  15. Ajax的封装(原生)
  16. Modular Arithmetic
  17. 王垠:编程宗派之我见
  18. 自己写的基金投资分析系统,这只基你们觉得怎么样?
  19. BZOJ4919: [Lydsy1706月赛]大根堆(set启发式合并)
  20. 任正非在荣耀送别会上的讲话(泪奔)

热门文章

  1. 查看Python的版本_查看当前安装Python的版本
  2. Floquet port激励及主从边界设置
  3. 铝阳极封孔废水除镍树脂CH-90
  4. 使用Node.js,AWS Lambda和MongoDB Atlas进行无服务器开发
  5. 机房建设及装修工程技术
  6. 高效过滤器是如何过滤的
  7. matlab 函数 矩阵参数,MATLAB函数矩阵参数
  8. Linux中的火墙管理
  9. leetcode系列374-猜数字大小
  10. 【C语言小游戏】图书管理系统