码迷,mamicode.com
首页 > 编程语言 > 详细

java数组

时间:2015-06-07 21:37:08      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

      数组:可以看成多个相同类型数据组合,对这些数据的统一管理。


1.声明、 创建

一维:type[]  var  例如:int[] a或 int a[];

 数组名= new  数组元素的类型[数组元素的个数]

public class TestNew  
    {  
         public static void main(String args[]) {  
             int[] s ;  //声明  或者int s[]   但是不可int s[5]      
             s = new int[5] ; //创建 new
             for(i = 0 ; i < 5 ; i++) {  
                 s[i] = i ;  
             }             
         }   
}

2初始化

     静态初始化:在定义数组的同时就为数组元素分配空间并赋值。

     动态初始化:数组定义和数组元素分配空间和赋值分开操作。

     默认初始化:数组是引用类型,元素相当于成员变量,因此数组在分配空间后,系统默认给每个元素进行了隐式初始化。

public class Test  
{  
     public static void main(String args[]) {  
         //动态初始化
         int a[] ;  
         a = new int[22] ;  
         a[0] = 0 ;  
         a[1] = 1 ;  
         Date days[] ;  
         days = new Date[2] ;  
         days[0] = new Date(2015,6,1) ;  
         days[1] = new Date(2012,5,5) ;  

         //静态初始化
          int a[] = {0,1} ;     
          Date days[]= {new Date(2015,6,1),new Date(2012,5,5} 

         //默认初始化
         int a[] = new int [2] ;     
         Date days[] = new Date[2]
            //输出结果,基本类型默认为0应用类型默认为null
         System.out.println(a[1]+" "+Date[1]) ;   
     }  
}  
 
class Date  
{  
     int year,month,day ;  
     Date(int year ,int month ,int day) {  
         this.year = year ;  
         this.month = month ;  
         this.day = day ;  
     }  
}



3.数组拷贝

java的lang包中封装了arraycopy方法可以实现数组的拷贝

public static void arraycopy(Object s,int sbeginPos,Object scopy,int scopybeginPos,int slength )           
        s:源数组  、 sbeginPos:源数组开始位置 
        scopy:目标数组  、 scopybeginPos:目标数组开始放置位置 
        slength:要拷贝源数组的长度

例子如下:

public class Array{
	
	//拷贝数组,
	public static void main(String[] args){
		//1.元素为基本类型的,目标数组和源数组的元素独立,不相互影响
		String[] s ={"IBM","Oracle","Apple"};
		String[] sBak = new String[6];
		
		//1.1从源数组s s[1]开始拷贝元素到目标数组sBak中从sBak[2]开始存放的拷贝进来的元素,拷贝的个数为s.length-1个
		System.arraycopy(s,1,sBak,2,s.length-1);
		
		for(int i=0;i<sBak.length;i++){
			System.out.print(sBak[i]+" ");
		}		
		//1.2修改目标数组一个元素值
		sBak[2]="tihuan";
        //1.2.1目标数组值改变
		System.out.print("\n");
		for(int i=0;i<sBak.length;i++){
			System.out.print(sBak[i]+" ");
		}
		//1.2.2源数组值不变
		System.out.print("\n");
		for(int i=0;i<s.length;i++){
			System.out.print(s[i]+" ");
		}
		
		//2.元素为引用类型的,拷贝的是数组的引用,对任意数组元素的修改都会影响其他数组。
		System.out.println();
		int[][] intArray ={{1,2},{1,2,3},{3,4}};
		int[][] intArrayBak = new int[3][];
		
		System.arraycopy(intArray,0,intArrayBak,0,intArray.length);
		//2.1修改目标数组的一个元素值
		intArrayBak[2][1] = 100;
		//2.2打印源数组看值是否发生变化
		for(int i=0;i<intArray.length;i++){
			for(int j=0;j<intArray[i].length;j++){
				System.out.print(intArray[i][j]+" ");
			}
			
			System.out.println();
		}  
	}
}

结果显示为:

技术分享


      数组属引用类型,同时数组可以看成对象,数组中的每个元素相当于该对对象的变量成员。作用声明数组的时候在栈内存中分配数组名的存储空间,创建的时候在堆内容中分配数组的存储空间。

java数组

标签:

原文地址:http://blog.csdn.net/u010928364/article/details/46403591

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!