(JavaSE)七、数组

数组

        什么是数组?

                所谓数组,就是在程序设计中,为了处理方便,把具有相同类型若干变量有序的形式组织起来的一种数据形式。这些按一定顺序排列的同类型数据的集合,称之为数组。

            数组中的每一个数据称之为元素,数组中的元素以索引来表示其存放的位置,索引从 0 开始,步长是1。

                                       

        为什么要使用数组?

                声明变量时,每一个单独的变量都要对应一个变量名,但现在要处理一组相同类型的数据时,比如,表示一个班的45名同学的年龄时,难道要定义45个变量?这时候就用上数组了。


数组的初始化

        Java中数组必须先初始化后才能使用,所谓初始化就是给数组元素分配内存,并为每一个元素赋初始值。初始化分为两种:

        静态初始化:

               特点:由我们自己来为每一个数组元素设置初始化值,而数组的长度由 JVM 决定。

                语法:数组元素类型 [ ] 数组名  = new 数组元素类型 [ ] { 元素1,元素2,元素3。。。 }

例子:

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};	//初始化一个数组
		
		int length ;
		length = arr.length;
		System.out.println("数组的长度:"+length);
		
		for (int i = 0; i < length; i++) {
			System.out.println(arr[i]);
		}
	}
}

分析:首先初始化一个一维数组,利用数组中的一个方法(数组名 . length)获取到数组的长度,利用 for 循环,输出数字每个元素。


解释一下数组所占内存情况

假设初始化两个数组:

    int[] arr = new int[]{1,2,3,4,5};

    int[] arr1 = new int[]{2,4,7};

   

每当我们初始化一个数组时,在堆中会初始化一个内存空间,空间中有初始化时所赋的值,每一个空间都有一个内存地址,当我们想使用这个内存空间,就需要栈从堆中获取这个空间的内存地址,

如果将arr 引用0x2048,那么剩余的那个0x1234 就没有作用,变成了垃圾,等待垃圾回收机制处理。

                    

       

        动态初始化:

                有我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值是由系统决定。

                语法:

                        数组元素类型[] 数组名 = new 数组元素类型[ 数组长度 ];

                        如:int[] arr = new int[10];

注意:

        (1)数组的下标是从0开始的,如果想获取数组的第n个元素,可以访问[n-1]元素获得

        (2)int[] arr = new int[5]{1,2,3,4,5};  这种写法是错误的!

        (3)当我们事先知道要存储哪些数据的时候,使用静态初始化。反之使用动态初始化

        

数组的基本操作:

         1:数组基本操作:

               获取元素:          元素类型 变量 =  数组名[index];

               设置元素:          数组名[index] = 值;

               遍历数组元素: 建议使用for循环,事先知道循环的次数.

               数组长度:  int len = 数组名.length;  length是属性,不是方法.

               索引范围:  从0开始,逐一递增.   [0,数组名.length-1]

        2:操作数组常见异常:

               NullPointerException:空指针异常(空引用).

                当数组还未初始化,就直接操作数组.

                String[] bs = null;

                System.out.println(bs.length)

               ArrayIndexOutOfBoundsException:数组的索引越界异常.

        3:获取数组最大最小元素(getMax,getMin).

        4:打印数组元素:

               直接打印数组的时候,打印出来是hashCode值,如[I@7439aca7.

               我们不喜欢,我们想打印数组的时候,把该数组的元素打印出来.

                String[] arr = {"A","B","C","D","E"};

        定义方法打印:

                字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。


打印格式:[A, B, C, D, E]

        5:逆序排列数组元素:

                原数组:[A, B, C, D, E]

                逆序操作

                新数组:[E, D, C, B, A]

         6:元素出现索引(第一次/最后一次),线性搜索.

                 int[] arr = {10,20,30,10,50,-30,10};

                 获取元素10在arr数组中第一次出现的索引(indexOf):   0

                 获取元素10在arr数组中最后一次出现的索引(lastIndexOf):6


多维数组

      数组是多个数据的集合.

            int[] arr = new int[] {1,3,5,7,9};

            如果现在有多个数组,我想把多个数组保存在一个集合中,此时我又应该如何完成.

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

            int[] arr2 = {4,5};

            int[] arr3 = {6};

            把上述的每个数组都作为一个元素,那么此时元素的类型为:int[]。

格式:

                数组元素类型[] 数组名;

                            int[][]  arr = new int[][]   {

                                    arr1 ,arr2,arr3

                            };

                 说白了,就是将一维数组中的每一个元素都换成一个一维数组,就是二维数组。以此类推。

例子:

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int[][] arrs = {{50,51,55},
				 		{53,87,65},
				 		{27,53,48}};   //定义一个三行三列的数组并且赋值
		
		//对m每个元素进行输出
		for(int i = 0 ; i <= 2; i++){
			for(int j = 0; j <= 2; j++){
				System.out.print(arrs[i][j]+" ");
			}
			System.out.println();
		}
		
	}
}

结果:











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值