04_javaSE面试题:方法的参数传递机制
Posted zhenghengbin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04_javaSE面试题:方法的参数传递机制相关的知识,希望对你有一定的参考价值。
题目
import java.util.Arrays;
/**
* @author kevin
* @date 2019/7/10 9:46
*/
public class Exam4
public static void main(String[] args)
int i= 1;
String str = "hello";
int[] arr = 1,2,3,4,5;
MyData my = new MyData();
change(i,str,arr,my);
System.out.println("i=" +i );
System.out.println("str=" + str);
System.out.println("arr="+ Arrays.toString(arr));
System.out.println("my.a="+my.a);
public static void change(int i,String str,int[] arr,MyData my)
i +=1;
str += "world";
arr[0] += 1;
my.a +=1;
class MyData
int a = 10;
运行结果
i=1
str=hello
num=2
arr=[2, 2, 3, 4, 5]
my.a=11
分析
首先,不要纠结于Pass By Value 和 Pass By Reference
的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。
- 对象类型永远传引用;
- 基本类型传值。
下面画了一张图更利于解释
玩的开心!
以上是关于04_javaSE面试题:方法的参数传递机制的主要内容,如果未能解决你的问题,请参考以下文章
一道 Java 方法传值面试题——Java方法传值的值传递概念和效果 + Integer 缓存机制 + 反射修改 private final 域