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
相关文章推荐
- Java学习备忘录(二)基础语法和数组(原创)
- java中数组基础
- Java语言基础:基本数组类型
- java基础知识(六) 数组中copy、排序、查找的应用
- java基础知识(三)对象数组
- java基础知识(二)数组定义
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- Java基础之随机打乱一个顺序数组
- java基础2--数组与方法
- Java基础:数组
- 操纵java数组-Java基础-Java-编程开发
- Java基础:第十四讲 数组
- Java基础复习——数据类型、变量和数组
- java基础2--数组与方法(几道练习题)
- JAVA数组,今天跟别人学习的,基础还是不过关。。。55555555555
- java基础 ---数组
- [零基础学JAVA]Java SE基础部分-05.数组与方法
- 第2章 Java编程基础——FAQ2.26 如何实现数组的复制?
- java基础整理3--数组的应用
- java基础问题-----数组有没有length()这个方法? String有没有length()这个方法