跳转至

java 数组

1. 数组介绍

  数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100]来代替直接声明 100 个独立变量 number0,number1,....,number99。介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。

  数组是相同类型数据的有序集合.

  • 相同类型的若干个数据,按照一定先后次序排列组合而成。
  • 其中,每一个数据称作一个数组元素
  • 每个数组元素可以通过一个下标来访问它们.

  数组特点:

  • 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
  • 其元素必须是相同类型,不允许出现混合类型。
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型。

  数组属引用类型

  • length, elements of the array

  数组是一个变量,存储相同数据类型的一组数据

  • 声明一个变量就是在内存空间划出一块合适的空间
  • 声明一个数组就是在内存空间划出一串连续的空间

数组
- 数组只有一个名称,即标识符 - 元素下标标明了元素在数组中的位置,从0开始 - 数组中的每个元素都可以通过下标来访问 - 数组长度固定不变,避免数组越界

数组

2. 声明数组变量

   首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arraydata;   // 首选的方法

或

dataType arraydata[];  // 效果相同,但不是首选方法

注意: 建议使用 dataType[] arraydata 的声明风格声明数组变量。 dataType arraydata[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

3. 使用数组

    1. 声明数组
    1. 分配空间
    1. 赋值
    1. 处理数据
数组处理
1. int[ ] a;
2. a = new int[5];
3. a [0] = 8;
4. a [0] = a[0] * 10;

3.1 声明数组

  • 声明数组: 告诉计算机数据类型是什么
int[ ] score1; //Java成绩 
int score2[ ]; //C#成绩 
String[ ] name; //学生姓名

数组

3.2 分配空间

   分配空间: 告诉计算机分配几个连续的空间

score = new int[30]; 
avgAge = new int[6]; 
name = new String[30];

声明数组并分配空间

数据类型[ ] 数组名 = new 数据类型[大小] ;

3.3 数组赋值

  赋值:向分配的格子里放数据

score[0] = 89; 
score[1] = 79; 
score[2] = 76;
  • 方法1: 边声明边赋值
int[ ] score = {89, 79, 76};
int[ ] score = new int[ ]{89, 79, 76};
  • 方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in); 
for(int i = 0; i < 30; i ++)
{ 
    score[i] = input.nextInt(); 
}

3.4 处理数据

  • 对数据进行处理:计算5位学生的平均分
code
/**
 * @author summer
 * @create 2020-01-27 16:35
 */
public class number {
    public static void main(String[] args) {
        int [] score = {60,70,80,90,100};
        double avg;
        avg = (score[0]+score[1]+score[2]+score[3]+score[4])/5;

        System.out.println("平均分是: "+avg);
    }
}

或者

public class number {
    public static void main(String[] args) {
        int [] score = {60,70,80,90,100};
        double avg = 0.0;
        int sum = 0;
        for (int i = 0; i <(score.length) ; i++) {
            sum += score[i];
        }
        System.out.println("平均分是: "+(double)sum/score.length);
    }
}
均分
import java.util.Scanner;

/**
 * @author summer
 * @create 2020-01-27 16:35
 */
public class number {
    public static void main(String[] args) {
        int[] score = new int[5];
        int sum = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入5位学员成绩: ");
        for (int i = 0; i <score.length ; i++) {
            score[i]=sc.nextInt();
            sum += score[i];
        }
        System.out.println("5位学员成绩平均分是:"+(double)sum/score.length);
    }
}

运行过程
请输入5位学员成绩: 
66 33 45 66 99
5位学员成绩平均分是:61.8

4. 多维数组

4.1 一维数组创建

  一维数组的声明方式有两种:

int[] data; //type[] arr_name; 
int data[]; //type arr_name[];

更多
double[] double_data;
String[] PersonName;
String[] StrArray; 
  • 创建数组

Java中使用关键字new 创建数组对象,创建基本数据类型一维数组对象演示

code
public class number {
    public static void main(String[] args) {
        int[] data = new int[10];
        for (int i = 0; i <data.length ; i++) {
            data[i] = i*i;
            System.out.println(data[i]);
        }
    }
}
运行结果
0
1
4
9
16
25
36
49
64
81

数组
数组
数组

4.2 一维数组初始化

  • 动态初始化
  • 数组定义与为数组元素分配空间并赋值的操作分开进行
int a[] = null; 
a = new int[3]; 
a[0] = 3; 
a[1] = 9; 
a[2] = 8;
  • 静态初始化
  • 除了用new关键字来产生数组以外,还可以直接在定义数组的同时 就为数组元素分配空间并赋值。
格式: 类型 [] 数组名 = {元素1[, 元素2 ……]}
int [] a = {1, 2, 3, 4, 5};
public class Test { 
    public static void main(String args[]) { 
        int [] a = { 3, 5, 7 }; 
    }
}
  • 数组元素的默认初始化

  数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式 初始化。

默认初始化

int a[] = new int[2];
boolean[] b = new boolean[2];
String[] s = new String[2];
for (int i = 0; i < 2; i++) System.out.println(a[i]);
for (int i = 0; i < 2; i++) System.out.println(b[i]);
for (int i = 0; i < 2; i++) System.out.println(s[i]);

结果是
0
0
false
false
null
null

4.3 数组的界限

  • 定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
  • 数组元素的引用方式:arrayName[index]
index为数组元素下标,可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i]; 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 ~ n-1;
  • 每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数);
数组的长度: 数组名.length
  • 起点和终点
起点: 数组名[0]
终点: 数组名[length-1]
int[] i = {4, 56, 78, 9, 34}; 
i.length -> 5 
i[0] -> 4 
i[length-1]=i[4] -> 34 
i[a] 若a>4 则???

5. 二维数组

int [][] a = {{1,2},{3,4,0,9},{5,6,7}};
Java中多维数组不必须是规则矩阵形式

i\j j=0 j=1 j=2 j=3
i=0 1 2
i=1 3 4 0 9
i=2 5 6 7

二维数组可以看成以数组为元素的数组。例如:

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

Java**中多维数组的声明**和初始化应按从高维到,低维的顺序进行,例如:

int [][] a= new int[3][]; 
a[0] = new int[2]; 
a[1] = new int[4]; 
a[2] = new int[3]; 
int t1[][] = new int[][4]; //非法
数组