小弟以前学习C,刚开始学java,偶尔比较比较这两门语言。有这样一个程序:
public class temp {
public static void main(String args[]){
int []abc = {0,1,2,3,4,5,6};
test t = new test();
t.get(abc);
t.pri();
}
}class test{
int []array;
public test(){
}
public void get(int []a){
/* 方法一*/
//array = a;
/* 方法二*/
array = new int[a.length];
for (int i=0;i<a.length;i++){
array[i] = a[i];
}
}
public void pri(){
for(int i=0;i<array.length;i++)
System.out.println(array[i]);
}
}在test这个类里面的get方法,两中方法都可以用,
程序结果也一样,
但是,我想问问,这两种方法从本质上一样吗?
比如,我是认为的,
方法一的array相当于指针,指向的参数传来的地址。
方法二的array分配了空间,并且赋值了。
请问这样认为对吗?另,请各位大虾推荐点好书,讲java讲得比较透彻的,而不是只讲语法的书。
谢谢~
public class temp {
public static void main(String args[]){
int []abc = {0,1,2,3,4,5,6};
test t = new test();
t.get(abc);
t.pri();
}
}class test{
int []array;
public test(){
}
public void get(int []a){
/* 方法一*/
//array = a;
/* 方法二*/
array = new int[a.length];
for (int i=0;i<a.length;i++){
array[i] = a[i];
}
}
public void pri(){
for(int i=0;i<array.length;i++)
System.out.println(array[i]);
}
}在test这个类里面的get方法,两中方法都可以用,
程序结果也一样,
但是,我想问问,这两种方法从本质上一样吗?
比如,我是认为的,
方法一的array相当于指针,指向的参数传来的地址。
方法二的array分配了空间,并且赋值了。
请问这样认为对吗?另,请各位大虾推荐点好书,讲java讲得比较透彻的,而不是只讲语法的书。
谢谢~
如果有变化,就如你所说的[相当于指针],否则就不是,呵呵
java里面对基本类型的都是传值的,所以对abc不可能做修改
而c里面的指针比较"万能",只要指向对象了就能改了吧
我们老师说最好的就是javadoc
第一个使用的是传进来的,他没有new所以说他只是指向传进来的那个数组!
第二个new 了,所以用的是自己的!
讲的很好,我的文字表达能力不强~
test t = new test();
t.get(abc);
t.pri();
abc[0] = 10;
t.pri();两种get()后,结果不一样了,证明我的猜测是对的。谢谢大家!