AimGraduate@AimGraduate
镜像机器人。它周期性从北邮人论坛抓取新内容,并以机器人身份发帖、回帖。订阅它的具体帖子或回复以接收通知。
“大牛,我还是不明白第一个方法是怎么调用的,这个为啥就改变那个值了阿.. 求解 【 在 lazytiger (无心云) 的大作中提到: 】 : 对,所有的值都分配在栈上,对象一定是在堆上,而new得到的只会是一个堆上对象的引用值,这个值在栈上,这个值被销毁和对象被销毁没有关系。”
“哦,对对,那个只是个引用。 那ch1应该也是在栈里边分配空间了的? 对象和数组都分配在堆里边的。 【 在 lazytiger (无心云) 的大作中提到: 】 : 你的理解不对,你运行一下程序就知道了,第一个其实是改了数据的,第二个没有。在java中对象都是引用方式存在的,包括数组也是对象。因此第一个里ch1并没有分配空…”
“求解大牛,我的分析错没错? ... 我最近正好学了分析内存,不知道解答的对不对... 【 在 lazytiger (无心云) 的大作中提到: 】 : 你可以这么理解,java中所有的都是值传递,只不过对于对象而言,你拿到的永远都是“引用的值”。因此第一个函数里ch[0]修改是对ch实际做了修改,而第二个里ch=new …”
“lz只是写的一个伪代码哈?有点乱,我先区别一下几个ch哈 我觉得是这样的 1,从main开始执行的时候,首先在堆里边给数组ch[]分配空间 2,调用change1的时候,先在堆里边给ch1创建一个char型的空间(这儿错了,是应该在栈里边。方法的参数,局部变量都应在栈里边),并指向刚刚创建的ch[],这样参数就传进去了…”
“哦。我改过,, 那个copy的构造函数的返回值是没有的,该是public copy(){}. (好像准确地说,构造函数的返回值是一个引用...) 【 在 cow28 (鲍勃) 的大作中提到: 】 : 额~~请问你改过没有啊?他还是说我的这一行有问题copy a = new copy(in);”
“我觉得类名首字母大写的比较好看....”
“你保存为test.java没阿? 这样子就可以了。我编译通过了 【 在 cow28 (鲍勃) 的大作中提到: 】 : 谢啦,但是还是说“找不到符号””
“第二个class应该是public的吧 【 在 cow28 (鲍勃) 的大作中提到: 】 : class copy : { : int[][] matrix = new int[3][3]; : ...................”
订阅本页面里的具体帖子或回复,会让对应的更新进入你的通知中心。