调用一个方法,传入的参数如果是基本类型(int ,long ,float等),改变该参数的值不会影响到原数据。如果传入的是一个类的对象,则改变参数的值的同时,原数据也会改变。这两点很好理解,一般的JAVA书中也会提到。
但是,我如果传入的是一个数组呢?
下面是我遇到的情况:
1,传入一个int数组,如果改变其中一个元素的值,会影响到原数组。
如:
value = new int [5][2];
然后调用以下方法:
void dosth(int [][] value)
{
value[2][2] = 1;
/*做后面的操作*/
}
则原来的value的value[2][2]也变成1。
但是如果我将传入的对象置为null,再重新new一下,比如:
void dosth(int [][] value)
{
value = null;
value = new int [10][2];
/*做后面的操作*/
}
在该方法value = new int [10][2];之后,可以对value[6][2]进行操作。
但是在调用该方法的地方,value的长度依然是[5][2],如果调用value[6][2]则报数组越界。
请问谁知道这个是怎么回事?JAVA在处理这部分的时候是什么机制?我想知道里面的原理。
2,如果以上的例子中不是基本类型数组,是一个自定义的类的数组呢?又是什么情况?
各位高手,能全部解答我的问题最好,如只能解答我一部分疑惑也没关系,只要是有用的答案就给分!~
java传入的参数:对象传引用,基本数据传值。数组在java中是作为对象处理的
1.方法传参不传值
楼主把你的方法改成下面这样子就比较好理解了:
void dosth(int [][] intArr)
{
一个JSP页面接收其他页面提交过来的FORM表单,但是要求只接收当前站点及其子站点提交过来的FORM表单,其他站点提交过来的表单不接收,这个怎么设置?
用过滤器
filter
将当前站点及其子站点放一个目录
然 ......
代码如下 ,我想通过代理访问一些网址,但是不知道如何测试代理成功,我想通过访问“http://www.blogger.com/”来看看是否代理成功,但是也不能访问,出现异常“Unexpected end of file from server”,但是如果不这 ......