小弟以前学习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讲得比较透彻的,而不是只讲语法的书。
谢谢~

解决方案 »

  1.   

    究竟对与不对,你自己试着更改原数组的值,再看array值的变化情况.
    如果有变化,就如你所说的[相当于指针],否则就不是,呵呵
      

  2.   

    好象不是吧
    java里面对基本类型的都是传值的,所以对abc不可能做修改
    而c里面的指针比较"万能",只要指向对象了就能改了吧
      

  3.   

    <Think in java>大多都推荐这本 不过我也没买
    我们老师说最好的就是javadoc
      

  4.   

    javadoc 到底是个什么东西啊,不是java的注释文档吗,我们怎么去用啊?
      

  5.   

    你的认识是对的.关于java的书,我是看Think in java入门的,然后再看看Core Java的几本书。
      

  6.   

    to:javadoc 到底是个什么东西啊,不是java的注释文档吗,我们怎么去用啊?就是java的帮助文档,相当于说明书一样,里面有java类的比较详细的说明,如对方法的使用,参数的作用
      

  7.   

    本人认为可以abc可以修改,在传值方面数组不同于一般的类型,数组类型传的数组首地址吧
      

  8.   

    我觉得这两种一点都不一样
    第一个使用的是传进来的,他没有new所以说他只是指向传进来的那个数组!
    第二个new 了,所以用的是自己的!
      

  9.   

    chylwk(沧海一浪) 
    讲的很好,我的文字表达能力不强~
      

  10.   

    int []abc = {0,1,2,3,4,5,6};
    test t = new test();
    t.get(abc);
    t.pri();
    abc[0] = 10;
    t.pri();两种get()后,结果不一样了,证明我的猜测是对的。谢谢大家!