java中传参内幕
2020-11-24 13:08
标签:class 类 java java中的参数传递传的其实是value。 先说一种现象,废话不多说,直接代码: A类(作为参数传递):
Test类(运行类): 另一种情况: B类: 为什么第一种情况会改变,第二种情况没变呢,想了一个晚上,个人觉得应该是这样的: 传参时传过去的是value, 对于第一种情况,我定义key为a的value名为va,如果是我想的那样,那么传过去的就是va,就算va如何变,他的索引,即key a一直对应的就是va。所以输出a时,就是输出va。 而第二种情况呢, 我定义key为i(Test的i)的value为vi1,同样将vi1传过去,vi1加一后将赋值给i(B的i),i的value定义为vi2,所以变的是vi2不是vi1,跳回Test,i(Test的i)对应的value还是vi1,所以没变。 如果要使它变,必须返回vi2赋值给i(Test的i)。 如果要使第一种情况不变,那就在方法里面new另外一个A类,那么改变的是新的A类,原来的key a对应的value就不会改变。这给第二种情况i不变的原因是一样的。
纯属个人观点,欢迎指导。 java中传参内幕 标签:class 类 java 原文地址:http://blog.csdn.net/u012367513/article/details/24672373public class A {
int i=1;
}
B类:public class B {
B(A a){
a.i+=1;
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B(a);
B b1 = new B(a);
B b2 = new B(a);
System.out.println(a.i);
}
}
结果是:4
public class B {
B(Integer i){
i+=1;
}
}
Test类:
public class Test {
public static void main(String[] args) {
Integer i = new Integer(1);
B b = new B(i);
B b1 = new B(i);
B b2 = new B(i);
System.out.println(i);
}
}
结果是:1
上一篇:Python3.2官方文档翻译-- 类定义语法和类对象
下一篇:C# 线程