java排列

      排列:它可以被看作是多个相同类型的数据的组合,这些数据的统一管理。


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("
");
		for(int i=0;i<sBak.length;i++){
			System.out.print(sBak[i]+" ");
		}
		//1.2.2源数组值不变
		System.out.print("
");
		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();
		}  
	}
}

结果显示为:


      数组属引用类型,同一时候数组能够看成对象,数组中的每一个元素相当于该对对象的变量成员。

作用声明数组的时候在栈内存中分配数组名的存储空间。创建的时候分配的存储空间阵列堆栈内容。

版权声明:在这篇文章中的不可避免的缺点,敬请各位批评,留下评论。

原文地址:https://www.cnblogs.com/hrhguanli/p/4842565.html