通过2个实例分析java参数传递时按值传递还是按引用传递
2017-01-13 16:31
585 查看
直接上代码吧
public class TestMap {
public static void main(String[] args) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String,String>>();
Map<String, String> innerMap = new HashMap<>();
innerMap.put("inner1key", "inner1value");
innerMap.put("inner2key", "inner2value");
map.put("out", innerMap);
System.out.println(map);
TestMap.test(map);
System.out.println(map);
}
public static void test(Map<String, Map<String, String>> map){
Map<String, String> innerMap = new HashMap<>();
innerMap = map.get("out");
innerMap.clear();
}
}
输出
{out={inner1key=inner1value, inner2key=inner2value}}
{out={}}
public class TestBase {
public static void main(String[] args) {
int mainvalue = 100;
TestBase.test(mainvalue);
System.out.println("mainvalue"+mainvalue);
}
public static void test(int value){
value = 0;
System.out.println("test---value"+value);
}
}
输出
test---value0
mainvalue100
有没有发现问题呢?
当参数为基本数据类型时 我们的参数时按值传递的 当参数为非基本数据类型时 我们的参数传递是按引用传递的 即我们传递的只是对象地址
public class TestMap {
public static void main(String[] args) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String,String>>();
Map<String, String> innerMap = new HashMap<>();
innerMap.put("inner1key", "inner1value");
innerMap.put("inner2key", "inner2value");
map.put("out", innerMap);
System.out.println(map);
TestMap.test(map);
System.out.println(map);
}
public static void test(Map<String, Map<String, String>> map){
Map<String, String> innerMap = new HashMap<>();
innerMap = map.get("out");
innerMap.clear();
}
}
输出
{out={inner1key=inner1value, inner2key=inner2value}}
{out={}}
public class TestBase {
public static void main(String[] args) {
int mainvalue = 100;
TestBase.test(mainvalue);
System.out.println("mainvalue"+mainvalue);
}
public static void test(int value){
value = 0;
System.out.println("test---value"+value);
}
}
输出
test---value0
mainvalue100
有没有发现问题呢?
当参数为基本数据类型时 我们的参数时按值传递的 当参数为非基本数据类型时 我们的参数传递是按引用传递的 即我们传递的只是对象地址
相关文章推荐
- java参数传递时到底是值传递还是引用传递
- Java究竟是通过值传递还是引用传递呢?
- Java中函数参数的传递是值传递还是引用传递
- Java 把对象作为参数传到一个方法里,这个是值传递还是引用传递, 为什么结果这么怪?
- Java参数传递到底是值传递还是引用传递?
- java参数传递时到底是值传递还是引用传递
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 画重点,Java方法的参数到底是值传递还是引用传递?
- Java中函数参数的传递是值传递还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java 方法中参数是值传递还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- java的方法调用,参数是按值传递还是按引用传递
- Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- Java参数传递机制分析:值与引用
- java参数传递究竟是按值呢,还是引用?
- java到底是按值传递还是按引用传递?