您的位置:首页 > 编程语言 > Java开发

java基础--数组

2017-05-27 22:38 162 查看

数组:

存储同种类型的多个元素的集合。

可以存储基本数据类型,也可以存储引用数据类型。

定义格式:
1-数据类型[] 数组名 ;//int类型的数组x变量。

2-数据类型 数组名[] ;//int类型的x数组变量。

推荐使用第一种!!
数组中每个元素都是有索引(下标)的,开始索引值从0开始,最大索引值是数组长度-1.

获取数组中的指定元素:数组名[索引];

数组赋值:

注意:java中数组必须初始化才能使用(使用变量要先赋值)。

初始化:为数组开辟内存空间,为内个数组元素赋予值。

初始化方式:
动态:只指定数组长度,系统给出初始化数值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];

      int [] array = new int[3];

例:

int [] array = new int{100,99,88};

获取数组中88的值:

array[2];

控制台打印输出100:

System.out.println(array[0]);

案例:
package com.lcn.day05;

public class ArrayDemo1 {

/**
* 创建一个动态数组并且给数组元素赋值
*/
public static void main(String[] args) {
//定义一个数组,长度为3
//  数据类型  数组名      new 数据类型[数组长度]
int[] array = new int[3];
System.out.println("---------------------------------------------");
//输出数组地址
System.out.println("数组地址是:"+array);
System.out.println("---------------------------------------------");
//输出数组元素默认值
System.out.println("元素默认值是:");
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println("---------------------------------------------");
//给数组元素赋值
array[0] = 1;//把1赋值给数组元素的第一个值
array[1] = 100;//把100赋值给数组元素的第二个值
array[2] = 1000;//把1000赋值给数组元素的第三个值
//输出赋值后的数组元素的值
System.out.println("赋值后的数组元素的值是:");
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println("---------------------------------------------");
}

}
输出结果:

---------------------------------------------

数组地址是:[I@45bab50a

---------------------------------------------

元素默认值是:

0

0

0

---------------------------------------------

赋值后的数组元素的值是:

1

100

1000

---------------------------------------------
静态:用户给出初始化值,系统决定数组长度。
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,..};

简化版格式:数据类型[] 数组名 ={元素1,元素2,..};

案例:
package com.lcn.day05;

public class ArrayDemo3 {

/**
* 静态数组赋值输出
*/
public static void main(String[] args) {
//定义一个静态数组
//数据类型  数组名      new 数据类型{元素1,元素2..}
int[] arr1 = new int[]{1,2,3};
//输出数组中的值
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
}

}
输出:

1

2

3
静态动态要注意:不能在一块定义

例如下面这样定义是错误的;int[] array = new int[3]{1,2,3};//错误
java中内存分配问题:

为了提高程序的效率对数据进行了不同空间对的分配。
栈:存储局部变量(在方法定义中或者在方法声明上的都是局部变量)
注意:数据使用完就释放掉。
堆:存储new出来的东西
注意:使用完会变成数据垃圾,但没有立即回收,java自带垃圾回收机制,会在垃圾回收器空闲是回收。

注意:

当栈内存中的两个引用,同时指向堆内存中的同一个对象时,两个引用的操作是同一个内存空间,都是在一个地址内做操作。

例:
package com.lcn.day05;

public class ArrayDemo2 {

/**
* 定义两个数组输出地址,并给元素赋值,把第一个数组的地址赋值给第二个数组并重新赋值
*/
public static void main(String[] args) {
//数据类型 数组名  new 数据类型[数组长度]
int[] array1 = new int [3];
System.out.println("array1的地址是:"+array1);
array1[0] = 1;
array1[1] = 1;
array1[2] = 1;
//输出值
System.out.println(array1[0]);
System.out.println(array1[1]);
System.out.println(array1[2]);

//定义数组array2并把数组1的地址赋给数组2(注意,两个数组类型一定要相同)
int[] array2 = array1;
System.out.println("array2的地址是:"+array2);
array2[0] = 999;
array2[1] = 666;
array2[2] = 1;
//输出值注意:输出的是数组1中的元素的值
System.out.println(array1[0]);
System.out.println(array1[1]);
System.out.println(array1[2]);
}

}
结果:

array1的地址是:[I@45bab50a

1

1

1

array2的地址是:[I@45bab50a

999

666

1

方法区:(了解)

本地方法区:(了解)

寄存器:(给cpu使用)

数组常见的问题:
1-数组越界问题:索引值下标超过数组长度,数组越界异常。

  ArrayIndexOutOfBoundsException

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

    System.out.println(arr1[-5]);//数组越界异常。

    System.out.println(arr1[6]);//数组越界异常。
2-数组空指针异常NullPointerException

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

    arr2=null;//空常量null赋值给数组的引用arr2,表示其地址为空

    System.out.println(arr1[-5]);//地址为空,不能访问

    System.out.println(arr1[6]);//地址为空,不能访问

   

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息