数组入门
数组的概念:存储同一种数据类型的多个元素的容器。
定义的格式:
A:数据类型[] 数组名;
B:数据类型 数组名[];
举例:
A:定义一个int类型的数组,数组名为a ,int[] a
B: 定义一个int类型的数组变量 int a[]
注意:效果都是一样的,都是定义了一个int类型的数组,知识念法上不同而已,推荐使用第一种。
package Java基础04_一维数组;
/*
* 如何对数组进行初始化数据
* A:所谓的初始化,就是为数组在内存开辟一块空间,并未对每个数组元素进行赋值
* B:初始化有两种方式:
* a:动态初始化:只给定长度,由系统给出初始值。
* b:静态初始化:给出初始值,由系统决定长度,一般来说,由几个值长度就是多少
* 动态初始化的格式:
* 数据类型[] 数组名 = new 数据类型[数组的长度(正整数)];
* 举例:int[] as = new int[3];
*
* 如何存放元素呢?
* 通过索引值来对元素进行存放:
* 什么是索引值:
* 此时的索引值就类似于现实生活的序号,序号是从1开始的,索引值是从0 开始的,
* 存:
* 数组名[索引值]=数据;
* 取:
* 数据类型 变量名 =数组名[索引值]
* 特点:数组的长度=最大索引值+1,最大索引值=数组长度-1;
* */
public class ArrayDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义一个int类型的数组,长度为3
int[] as = new int[3];
as[2]=36;
int i=as[2];
System.out.println(i);
int o = as[2];
System.out.println(o);
/*
* 定义两个数组,分别输出各自元素值
* 然后给每个数组的元素进行重新赋值,再次分别输出两个数组的元素
*
*/
int[] a =new int[2];
int[] b = new int[3];
System.out.println("第一个数组:");
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println("第二个数组:");
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
//赋值:
a[0]=1;
a[1]=2;
b[0]=1;
b[1]=2;
b[2]=3;
System.out.println("赋值后第一个数组:");
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println("赋值后第二个数组:");
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
System.out.println("==========================");
/*
* 定义第一个数组。定义完毕后,给数组进行赋值,并输出各个元素
* 定义第二个数组,把第一个数组的地址值赋值给第二个数组,再给第二个数组进行赋值,
* 最后再次输出第一个数组中的各个值
*
* 地址值赋值: arr2 = arr1;
*/
int[] arr3 = new int[3];
arr3[0]=1;
arr3[1]=2;
arr3[2]=3;
System.out.println(arr3[0]);
System.out.println(arr3[1]);
System.out.println(arr3[2]);
System.out.println("地址值:"+arr3);
int[] arr4 =arr3;
System.out.println(arr4[0]);
System.out.println(arr4[1]);
System.out.println(arr4[2]);
arr4[2]=333;//给arr4[2]重新赋值,arr3[2]的值也会改变。
System.out.println(arr3[2]);//输出333,因为地址值一样,此时操作的是同一快内存空间
}
package Java基础04_一维数组;
/*
* 数组的静态初始化:
* 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,......};
* 简化格式:数据类型[] 数组名={元素1,元素2,元素3,......};
* 举例:
* int[] arr1 = new int[]{1,2,3,4,5};
* 简化后:int[] arr1 ={1,2,3,4,5};
* 注意:不能同时动态和静态一起声明。
*/
public class ArrayDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//静态定义一个一维数组
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = {1,2,3,4,5,6,7,8};
String[] tanke={"张飞","刘备","关羽"};
//获得arr1中的第3个元素
System.out.println(arr1[2]);
//获得tanke的长度
int tk = tanke.length;
System.out.println(tk);
//获得tanke中最后一个元素。
String str = tanke[tk-1];
System.out.println(str);
/*
* 数组操作的两个常见的小问题:
* 1.数组下标越界:java.lang.ArrayIndexOutOfBoundsException
* 2.空指针异常:java.lang.NullPointerException
* 原因:数组已经没有了内存地址值了,而你还用数组名访问,肯定是空指针异常
*/
int[] i = {1,2,3};
//System.out.println(i[3]);// 1.数组下标越界
i=null;
System.out.println(i[3]);//2.空指针异常
}
}