java和C++中数组的初始化和复制

4 篇文章 0 订阅

数组的初始化和复制

一.初始化:

1.C++中数组的初始化

a. int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5,5 };

        charmyArry[10] = “xiezhongqian”;


b、将缺省的成员置为 0:

        intmyArray[10] = { 1, 2 }; //initialize to 1,2,0,0,0...
初始化全部成员为0:

        intmyArray[10] = { 0 }; //all elements 0

        int  myArray[10] = {1}; //数组初始化为{1,0,……}

c、在 C++中, 空的初始化也会将全部成员置为 0:

        intmyArray[10] = {}; //all elements 0 in C++
如果声明为static,则全部成员默认为0,如果你不去手动初始化的话。

        staticint myArray[10]; //all elements 0

        memset(touchInfos,0, sizeof(touchInfos)); 

d、或者使用new一个数组:int a[] = new int[10];

        这种方法不能直接初始化。

 

2.Java数组的初始化

动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;

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

默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。

TestD.java(动态):

程序代码:

public class TestD  

{  

     public static void main(String args[]) { 

         int a[] ;  

         a = new int[3] ;  

         a[0] = 0 ; 

         a[1] = 1 ; 

         a[2] = 2 ; 

         Date days[] ; 

         days = new Date[3] ; 

         days[0] = new Date(2008,4,5) ;  

         days[1] = new Date(2008,2,31) ;  

         days[2] = new Date(2008,4,4) ;  

     }  

}  

 

class Date 

{  

     int year,month,day ;  

     Date(int year ,int month ,int day) {  

         this.year = year ;  

         this.month = month ;  

         this.day = day ;  

     }  

}  

 


TestS.java(静态):

程序代码:

public class TestS     

{     

     public static void main(String args[]) {    

         int a[] = {0,1,2} ;     

         Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;    

     }    

}     

 

class Time     

{     

     int hour,min,sec ;    

     Time(int hour ,int min ,int sec) {    

         this.hour = hour ;    

         this.min = min ;    

         this.sec = sec ;    

     }    

}    


TestDefault.java(默认):

程序代码:

public class TestDefault     

{     

     public static void main(String args[]) {    

         int a [] = new int [5] ;     

         System.out.println("" + a[3]) ;     

     }    

}   

 

二、数组的复制

2.1 C++中数组的复制

 

1)使用逐个复制的方法:

for (int i=0 ; i<10 ; i++)

{

        b[i] = a[i];

}

2)使用memcpy

inta[10]={34,56,4,10,77,51,93,30,5,52};
int b[10];
memcpy(b,a,sizeof(b));

 

2.2 java数组的复制

常用的数组复制的方法有以下3种:
1).使用循环语句逐个复制数组的元素(最简单的方法)

          for(int j = 0;j<targetArray.length;j++){

                targetArray[j] = sourceArray[j];

            }

2).使用System类中的静态方法arrayCopy
//使用System中的静态方法arraycopy复制数组   
System.arraycopy(sourceArray, 0,targetArray, 0, sourceArray.length); 

3).使用clone方法复制数组
 targetArray= (int[])sourceArray.clone();            //使用clone方法将int[]型数组将sourceArray复制到targetArray 注意:由于clone方法返回值的类型是对象Object 所以要使用(int[])强制转换为int[]

                                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值