JavaSE——数组

一、什么是数组

        数组可以存放多个同一类型的数据,数组本身也是一种数据类型,不同于int这类的基本数据类型,数组是引用数据类型。可以将数组理解为一组数据

        数组使用的注意事项:

  1. 数组是为方便实现多个相同类型数据的统一管理而构建的组合。
  2. 数组中的元素可以是任何类型,包括基本类型和引用类型,但是不能混用。
  3. 数组创建后,如果没有赋值,则为默认值:byte 0;short ;int 0;long 0;float 0.0;double 0.0;char \u0000;boolean false;String null。
  4. 使用数组的步骤:1.声明数组并开辟空间;2.给数组的各个元素赋值;3.使用数组。
  5. 数组的下标是从0开始的。
  6. 数组下标必须在指定的范围内使用。
  7. 数组的类型是引用类型,数组型数据是一个对象。

二、一维数组的赋值机制

int n1 = 10;
int n2 = n1;

n2 = 80;

System.out.println("n1" + n1);//10
System.out.println("n2" + n2);//80

        像int这样的基本数据类型赋值,赋值方式是值拷贝,也就是说在上个例子中,只是将n1所存储的值拷贝给n2,n2的改变对n1没有任何影响。 

int[] arr1 = {1,2,3};
int[] arr2 = arr1;

arr2[0] = 10;

        而数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值,arr2的变化会影响arr1。

        Java中数组可以在内存中这样体现,数组指向内存中的一个地址,arr2 = arr1 是将arr1指向的地址赋给arr2,两个数组指向同一块地址空间,一方的修改必然影响另一方。

        所以要将一个数组拷贝到另一个数组又需要将它们隔离开的方法是:

int[] arr1 = {1,2,3,4,5}
int[] arr2 = new int[arr1.length];

for(int i = 0; i < arr1.length; ++i)
{
    arr[2] = arr[1];
}

三、一维数组的使用

        一维数组声明方式有:int[] x 或者 int x[]。

3.1动态初始化

基本语法:

数据类型  数组名[] = new 数据类型[大小]
int a[] = new int[5];//创建了一个整型数组,名字为a,存放五个int类型的元素。
int[] a = new int[5];//也可以这样写。

        或者先声明,以后再创建数组。

int[] a;
a = new int[5];

         数组使用数组名[下标/索引]的方式进行使用,比如:访问a数组的第3个元素 a[2]。

Scanner sc = new Scanner(System.in);
//声明并开辟空间
int[] arr = new int[5];
//赋值
for(int i = 0; i < arr.length; ++i)
{
    arr[i] = sc.nextInt();
}
//打印
for(int i = 0; i < arr.length; ++i)
{
    System.out.println(arr[i] + "\t");
}

3.2静态初始化 

基本语法:

数据类型 数组名[] = {元素,元素,...,元素}
int a[] = {1,2,3,4,5,6,7};
相当于
int a[] = new int[7];
a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; 
a[4] = 5; a[5] = 6; a[6] = 7;

四、二维数组 

        Java中除了一维数组以外,还有二维数组。从定义形式上看int[][],也可以这样理解,原来的一维数组中每个元素就是一个一维数组。

4.1二维数组的使用

        二维数组声明方式有:int[][] y或者 int[] y[]或者int y[][]。二维数组实际上由多个一维数组构成,它的各个一维数组的长度可以相同,也可以不相同。比如:map[][]是一个二维数组,int map[][] = {{1,2},{3,4,5}},map[0]是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组,我们也称为列数不等的二维数组。

int[][] arr = new int[3][];//可以这样定义二维数组,其中的每个一维数组可以不是同样大小的。
for(int i = 0; i < arr.length; ++i){//遍历每个一维数组
    //给每个以为数组开空间 new
    //如果没有给一维数组开空间,那么arr[i]就是null    
    arr[i] = new int[i+1];
    遍历每个一维数组,并给一维数组的每个元素赋值。
    for(int j = 0; j < arr[i].length; ++j){
         a[i][j] = i + 1;
    }
}

4.2二维数组内存分布机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值