java基础--数组

来源:互联网 发布:网络推广合同注意事项 编辑:程序博客网 时间:2024/06/12 06:27

数组:

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

可以存储基本数据类型,也可以存储引用数据类型。
定义格式:
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]);//地址为空,不能访问


   
原创粉丝点击