【JAVA零基础入门系列】Day10 Java中的数组

简介:   【JAVA零基础入门系列】(已完结)导航目录Day1 开发环境搭建Day2 Java集成开发环境IDEADay3 Java基本数据类型Day4 变量与常量Day5 Java中的运算符Day6 Java字符串Day7 Java输入与输出Day8 Java的控制流程Day9 Java中的那个大数值Day10 Java中的数组Day11 Java中的类和对象Day12 Java类的简单应用Day13 Java类的继承与多态Day14 Java对象的克隆Day15 对象的比较  什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去。

  【JAVA零基础入门系列】(已完结)导航目录

  什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去。

  那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做成绩统计,如求总分,平均分,方差等的时候,遍历成绩信息又成了一大难题,这个时候,你就需要用到数组了。

  数组可以很好的解决这两个问题,数组名只有一个,只需要使用数组名加下标来访问各个元素的信息即可,遍历的时候,由于下标是连续的,所以访问起来十分方便。

  接下来,就开始正式介绍一下数组吧。

  数组是用于存储相同数据类型的集合,使用数组前需要先声明数组,声明方式为:int[] a; 这里只声明了变量,并没有真正初始化为数组。应该使用new运算符创建数组,int[] a = new int[100]; 这里声明了一个大小为100的整数型数组,也就是说,里面可以存放最多一百个整数。需要注意的是,数组的下标是从0-99,而不是1-100,所以,数组里的最后一个数是a[99]而不是a[100],数组定义好之后,就可以用循环结构来进行赋值操作。

int[] a = new int[100];
for(int i = 0; i < 100; i++)
    a[i] = i;

   新建的数字数组,里面元素都会被初始化为0,如果是逻辑型数组,则都会初始化为假,对象型数组则初始化为null,当你创建一个字符串数组的时候,里面元素都是null而不是空字符串,所以如果希望初始化后为空串,则需要像上述操作那样,遍历每个元素来赋值空串。

  对于Java中的数组遍历,还有一种更简便的方法,类似于C#中的for each循环,Java也有同样的for each操作。

for(int element:a)
    System.out.println(element);

  这段代码会依次打印a中的元素,每个元素占一行,这里的每次循环,都会将数组a中的一个元素暂存在element中,处理完之后在将下一个元素存放在element中。这样做的好处是,省略了下标处理,这样就不存在下标越界的问题了,看起来也更加简洁。当然,如果在循环中需要利用下标进行一些判断或者处理,就只能需要使用普通的for循环来处理了。两种方法各有优点,具体情况具体分析即可。

  对于数组的初始化,有几种比较常见的方式。

int[] a={1,2,3,4,5};//这里不需要使用new
new int[]{2,3,4,5,6};//匿名数组
a = new int[]{2,3,4,5,6};

  如果你有学过C或者C++的话,这里的int[] a= new int[100]; 相当于C++中的int* a = new int[100];也就是说,数组变量是一个指针,所以将一个数组变量拷贝给两一个数组变量时,它们将指向同一个数组。举个栗子:

int[] a;
int[] b = {3,4,5,6};
a = b;
a[2] = 10;
System.out.println(b[2]);

  这里将输出10,也就是说b指向的数组的元素被改变了。如果只想把一个数组里的元素的值拷贝到另一个数组中去的话,就要使用Arrays类的copyOf方法,这个方法有两个参数,第一个是需要拷贝的数组,第二个是需要拷贝的长度。来看一个栗子:

package pers.frank.test;
import java.util.Arrays;

public class Test{
    public static void main(String[] args) {
        int[] a;
        int[] b = {3,4,5,6};
        a = Arrays.copyOf(b,8);
        a[2] = 10;
        System.out.println("==B==");
        for(int i:b)
            System.out.println(i);
        System.out.println("==A==");
        for(int i:a)
            System.out.println(i);
    }
}

  这样,会循环输出数组b和数组a的各个元素。

  

  这里我们将第二个参数设置成了8,而数组b的长度只有4,那结果会怎样呢?答案显而易见,会把多的长度用0填充。

  在前面的栗子里,我们经常看到Java应用程序里带有String[] args的main方法,这个参数表名,main方法接收一个字符串数组,也就是命令行参数。举个栗子:

public class Test{
    public static void main(String[] args) {
        if(args[0].equals("-h"))
            System.out.print("Hello,");
        else if (args[0].equals("-g"))
            System.out.print("Goodbye,");
        for(int i = 1; i < args.length; i++)
            System.out.print(" "+ args[i]);
        System.out.print("!");
    }
}

  运行结果如下:

  

  下面再讲讲数组排序,Arrays类中有一个sort方法,用于给数组的元素进行排序,使用的是快速排序算法,算是效率比较高的算法了。这里举个栗子进行演示。

import java.util.Arrays;

public class Test{
    public static void main(String[] args) {
        int[] numbers = new int[10];
        for(int i=0;i<10;i++){
            numbers[i] = (int)(Math.random()*10);
        }
        System.out.println("Before Sort:");
        for (int j:numbers){
            System.out.println(j);
        }
        Arrays.sort(numbers);
        System.out.println("After Sort:");
        for (int j:numbers){
            System.out.println(j);
        }
    }
}

  

  最后再说说多维数组吧,之前的数组只能算是一维数组,二维数组就像Excel的表格那样,有着行跟列,如果有了解过矩阵的话,那对于二维数组应该就不陌生了,在Java中声明二维数组也很简单: int[][] number; 只比一维数组多了一对[]。同样也需要用new来定义数组大小。当然也可以使用类似于一维数组的初始化方法。

int[][] numbers = {
  {1,2,3},
  {4,5,6},
  {7,8,9}
}

  数组元素的访问同样需要使用两个方括号,如numbers[1][2],这里的值是数字6,第一个方括号里代表行号,第二个方括号里代表列号,所以这里就是第二行,第三列的数。如果需要遍历二维数组的话,就需要使用两个for循环了,

for(int i=0;i<numbers.length;i++){
  for(int j=0;j<numbers[i].length;j++){
    System.out.println(numbers[i][j]);
  }
}

  至于更高维度的数组,一般不会用到,这里就不多介绍了。

  至此本篇讲解完毕,欢迎大家继续关注!

真正重要的东西,用眼睛是看不见的。
相关文章
|
1月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
31 4
|
1月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
30 2
|
1月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
1月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
46 9
|
1月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
24 3
|
1月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
29 6
|
1月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
23 1
|
1月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
15 1
|
1月前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
1月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
35 0
下一篇
无影云桌面