Java -- 数组

目录

1.数组的介绍

2.数组的声明

3.数组的创建

4.数组元素的初始化

5.使用数组

6.多维数组


1.数组的介绍

  • 数组的概念

数组由同一类型的对象或者基本数据组成,并封装在同一个标识符(数组名称)下。

 

  • 数组是引用类型(对象)

    • 动态初始化

    • 可以赋值给Object类型的变量

    • 在数组中可以调用类Object的所有方法

    • 每个数组都有一个由public final修饰的成员变量:length即数组含有元素的个数(length可以是正数或零)

  • 数组元素

    • 数组中的变量被称作数组的元素

    • 元素没有名字,通过数组名字和非负整数下标值引用数组元素。

2.数组的声明

  • 数组的声明

    • 数组引用的声明

      • 声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间

      • 不能直接使用,必须经过初始化分配内存后才能使用

    • 数组声明举例

    Type[ ] arrayName;
    例如∶
    int[] intArray;
    String[] stringArray;
    ​
    Type arrayNahe[ ];
    例如∶
    int intArray[];
    String stringArray[];

3.数组的创建

  • 数组的创建

    • 用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量

    • 基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象的的引用

    数组的创建举例

    arryName=new Type[componets number];

//例如:
int[] ai;   ai=new int[10];
String[] s; s=new String[3];
//或者可以将数组的声明和创建一并执行
int ai[]=new int[10];
//可以在一条声明语句中创建多个数组
String[] s1=new String[3],s2=new String[8];

对象是引用类型的数据

int[ ] a = new int[5]

int[ ] a (引用):会为a变量在栈内存中开辟一部分空间 new int[5](对象):会在堆内存中开辟一部分空间 = :会把堆空间当中对象的首地址赋值给a变量,建立起引用关系

4.数组元素的初始化

  • 声明数组名时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素进行初始化

    int a[]={22,33,44,55};
  • 创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。

    • byte、short、int、long类型的数组元素默认的初始值为0;

    • float、double类型的数组元素默认的初始值为0.0;

    • char类型的数组元素会被统一设置为'\u0000'(即空字符)

  • boolean类型数据,默认值为false;

    • 引用类型(String等)元素的默认值为null。

  • 程序也可以在数组被构造之后改变数组元素值

    int a[] = new int[] {1,2,4}

5.使用数组

  • 引用数组的一个元素:
    arrayName[index]
    • 下标从零开始计数。

    • 数组下标必须是int , short, byte,或者char。

  • 元素的个数即为数组的长度,可以通过arryName.length得到。

  • 元素下标最大值为length - 1,如果超过最大值,将会产生数组越界异常( ArrayIndexOutOfBoundsException )

  • 数组名是一个引用

    public class Arrays{
        public static void main(String[] args){
            int[] a1 = {1,2,3,4,5};
            int[] a2;
            a2 = a1;
            for(int i=0;i<a2.length;i++)    a2[i]++;
            for(int i=0;i<a1.length;i++)
            System.out.println("a1["+i+"]="+a1[i]);
        }
    }

    运行结果:

    a1[0]=2 a1[1]=3 a1[2]=4 a1[3]=5 a1[4]=6

字符串引用构成的数组——每个元素都是引用

public class ArrayOfStringDemo{
    public static void main(String[] args){
        String[] anArray = {"String One","String Two","String Three"};
        for(int i=0;i<anArray.length;i++){
          System.out.println(anArray[i].toLowerCase());
        }    
    }
}

运行结果:

string one string two string three

  • length是int类型,最大为:2,147,483,647。最小为0(不能存入元素,但语法正确)

public class Length{
    public static void main(String[] args){
        int[] a = new int[] {2147483648};
        System.out.println(a.length);
    }
}

运行结果:

Length.java:3: 错误: 过大的整数: 2147483648 int[] a = new int[] {2147483648}; ^ 1 个错误

  • 修改数组元素的值

import java.util.Arrays;
public class Test{
    public static void main(String[] args){
        int[] a = new int[] {1,2,3};
        a[2] = 100;
        System.out.println(Arrays.toString(a));
    }
}

运行结果:

[1, 2, 100]

  • 复制数组或数组的部分元素

    public static void arraycopy(Object source,int srclndex,Object dest,int destIndex,int length )

     

//复制数组或数组的部分元素
public class ArrayCopyDemo{
    public static void main(String[] args){
        char[] copyFrom = {'d','e','c','a','f','f','e','i','n','a','t','e','d'};
        char[] copyTo = new char[7];
        System.arraycopy(copyFrom,2,copyTo,0,7);
        System.out.println(new String(copyTo));
    }
}

运行结果:

caffein

6.多维数组

int[][] gradeTable;

......

gradeTable[0][1]为42
gradeTable[3][4]为93
gradeTable[6][2]为78

 

  • 二维数组的声明和构造——多种方式

    • int[ ] [ ] myArray;

      • myArray是一个指向2维整数数组的引用。其初始值为null。

    • int[ ] [ ] myArray = new int[3] [5]

      • 定义引用时,同时构造数组并初始化引用。这个数组所有元素的初始值为零。

    • int[ ] [ ] myArray = {{8,1,2,2,9},{1,9,4,0,3}

      • 定义引用、构造数组,初始化数组元素。

二维数组的长度及每行的长度

public class UnevenExample3{
    public static void main(String[] args){
        //声明并构造一个2维数组
        int[][] uneven = {{1,9,4},{0,2},{0,1,2,3,4}};
        //数组的长度(行数)
        System.out.println(uneven.length);
        //数组每一行的长度(列数)
        System.out.println(uneven[0].length);
        System.out.println(uneven[1].length);
        System.out.println(uneven[2].length);
    }
}

运行结果:

3 3 2 5

int[ ] [ ]arr = new int[3] [4];

 

import java.util.Arrays;
public class Test{
    public static void main(String[] args){
        int[][] a = new int[3][4];
        System.out.println(Arrays.toString(a[0]));
        System.out.println(Arrays.toString(a[1]));
    }
}

运行结果:

[0, 0, 0, 0] [0, 0, 0, 0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我和程序有一个能跑就行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值