黑马程序员技术交流社区
标题:
总结java复制数组
[打印本页]
作者:
王琪
时间:
2014-2-28 01:25
标题:
总结java复制数组
本帖最后由 王琪 于 2014-2-28 01:29 编辑
我想了好像java不像C语言 1.C语言 2java
#include <stdio.h> class java{
void fun(char p[] ){//char *p void fun( char [] p ){
char code[]={'4','5','6','7'}; char []code={'4','5','6','7'};
p=code//
此时p所指的对象本身发生了变化
p=code; ///应该只是对象
句柄转移
} //
如果参数改为char p[4]是传值像java的克隆
} //不会干扰传来的a数组
void main(){ public static void main(String[]args){
char a[]={'1','2','3','4'}; char [] a={'1','2','3','4'};
fun( a ); printf("%s",a) // 输出4567 fun( a ); System.out.println(
new String(a)
); //输出1234
} } }
//System.out.println(a);将输出乱码地址
2 所以通过函数改变的方法:(1)for循环通过索引一个一个改变(2)通过
System类的arraycopy静态函数用于数组拷贝
(1)for( ; ; ){}
void bain(int [] a,int [] c){
for (int i = 0; i < a.length; i++) {
c[i]=a[i];
}
}
复制代码
缺点是a.length太大 c的小 或者谁的大谁的小都不知道是怎么处理,String bite char相互转换复制怎么办 一个.length 好像办不到
(2) for(高级)
这个我想了但是我也不会用,也查了资料希望对大家有用
<b>普通的for循环:
public class test {
public static void main(String[] args) {
int a[]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
增强型的for循环:
public class test {
public static void main(String[] args) {
int a[]={0,1,2,3,4,5,6,7,8,9};
for(int i :a){
System.out.print(i+" ");
}
}
}
在上面这个例子 增强型的for循环 和普通for循环一样
增强型的for循环 优点主要体现在集合中,随便举个例子
比如对 set 的遍历
一般是迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
for循环遍历:
for (String str : set) {
System.out.println(str);
}
是不是简单些?
优点还体现在泛型 假如 set中存放的是Object
Set<Object> set = new HashSet<Object>();
for循环遍历:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj;
}else if(obj instanceof String){
String aa = (String)obj
}
........
}
如果你用Iterator遍历,那就晕了
map list 也一样
唯一的缺点就是 在遍历 集合过程中,不能对集合本身进行操作
for (String str : set) {
set.remove(str);//错误!
}</b>
复制代码
(我连夜做的)但字数太多就不让发表了就分开发了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2