Java数组

1.数组的声明

 2种基本的形式

ArrayType ArrayName[]
ArrayType[] ArrayName
2种声明方式没有区别,只是第2种可以同时声明多个数组,使用起来比较方便,如

int array[];
int[] array1,array2;

2.创建数组对象

上面语句只是对数组进行了声明,还没有分配内存,所以还不可以存放,也不能访问,需通过new创建数组对象

		int array[];
		array=new int[5];//注释后出错
	//	int array[]=new int[5];//上面2句也可以这样连着写
		
		array[4]=5;
		System.out.println(array[4]);
	
注意:数组的第一个元素的索引为0即上述例子中array[0],最后一个元素是array[4]不是array[5]

3.数组的初始化

		int array[]=new int[5];	
		for(int i=0;i<array.length;i++)
		array[i]=i+1;
	
		//或者
		//int array[]=new int[]{1,2,3,4,5};	
		//注意不能指定int[]数组长度否则出错
		//或者
        //  int array[]={1,2,3,4,5};

		//打印数组值,length属性顾名思义是数组长度
		for(int j=0;j<array.length;j++)
		System.out.println(array[j]);

创建数组对象后数组不必初始化也可以访问,那是因为创建数组对象时给出了相应类型的默认值


4.多维数组

下面是一个不错的例子(选自孙卫琴的Java面向对象编程14.5多维数组

假定某个宾馆有三层楼,第一层4个房间,第二层3个房间,第三层5个房间住宿情况如图


    String[][] rooms=new String[3][];
     rooms[0]=new String[]{"Tom","Mike","Jack","null"};//第1层楼客人
     rooms[1]=new String[]{"Marry","null","Linda"};//第2层楼客人
     rooms[2]=new String[]{"null","Jane","null","null","Rose"};//第3层楼客人
     //等价于
  /*   String[][] rooms={{"Tom","Mike","Jack","null"},
    		 {"Marry","null","Linda"},
    		 {"null","Jane","null","null","Rose"} 
     };*/

     //打印各个房间客人信息
		
		for(int i=0;i<rooms.length;i++)
			for(int j=0;j<rooms[i].length;j++)	
			{
				int roomNumber=(i+1)*100+j;//计算房间编号
				System.out.println(roomNumber+"房间:"+rooms[i][j]);
			}
	

5.数组的拷贝

(1)copyOf()方法

语法:copyOf(arr,int len);

参数说明:

arr:是要进行复制的数组

len:复制后新数组的长度

注意如果新数组的长度大于数组arr则用0填充,如果小于arr长度则从arr第一个元素截取至新数组长度为止

(2)copyOfRange()方法

语法:copyOfRange(arr,int fromIndex,int toIndex);

参数说明:

arr:是要进行复制的数组

fromIndex:开始复制数组的索引位置,必须在0与数组长度之间,新数组包括索引为fromIndex的元素

toIndex:复制范围的最后索引位置,可以大于arr长度,新数组不包括索引为toIndex的元素

注意新数组的长度等于toIndex-fromIndex,所以toIndex必须大于fromIndex值,否则出错

	/**打印数组*/
	public static void arrayPrint(int array[])
	{
		
		for (int i : array)
			System.out.print(i + "   ");
		System.out.println();
	}
	
	public static void main(String[] args)
	{

		int array1[] = { 1, 2, 3 };
		int array2[] = { 4, 5, 6 };
		
		System.out.println( "下面是array1拷贝array2的3种测试");
		System.out.println( "拷贝前");
		System.out.print( "array1=");
		arrayPrint(array1);
		System.out.print( "array2=");
		arrayPrint(array2);
	
		array1=array2;//直接赋值拷贝
		//array1 = Arrays.copyOf(array2, 4);//使用copyOf
		// array1 = Arrays.copyOfRange(array2, 1,5);//使用copyOfRange
		
		System.out.println( "拷贝后");
		System.out.print( "array1=");
		arrayPrint(array1);
		System.out.print( "array2=");
		arrayPrint(array2);
			

		array2[0]=8;//修改array2[0]值	
		System.out.println( "修改array2[0]=8后,array1[0]和array2[0]变化情况");
		System.out.println( "array1[0]="+array1[0]);
		System.out.println( "array2[0]="+array2[0]);
	}
关于数组的拷贝初学者很容易用=号直接赋值拷贝,上例改变array2[0]值重新打印数组, 发现array1[0]值跟着改变了,那是因为直接赋值只会使数组array1指向array2数组。下面是拷贝的3种测试结果图,依次为直接赋值拷贝、使用copyOf、使用copyOfRange的截图



参考文献:

                   Java从入门到精通  高宏静

                   Java面向对象编程  孙卫琴


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值