日期:2014-05-20 浏览次数:20682 次
public class DHCC extends Another{ public static void diandao(int[] a) { int l = a.length; int half = l/2; int tmp; for(int i=0;i<half;i++) { tmp = a[i]; a[i] = a[l-i-1]; a[l-i-1] = tmp; } } public static void main(String[] args) { int [] a = {1,2,3,4,5,6,7,8,9}; diandao(a); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
public class Another{ public static void diandao(String str){ str = "kkkk"; } public static void main(String[] args){ String str = "lllll"; changeString(str); System.out.println(str); } }
public class Another{ public static void diandao(String str){ str = "kkkk"; } public static void main(String[] args){ String str = "lllll"; changeString(str); /* 这是什么函数?写错了吧*/ System.out.println(str); } }
------解决方案--------------------
java中只有传值的方式,对于数组来说,引用和原型指向同一块内存,所以通过方法可以改变数组的值,而对于String来说,引用和原型指向不同的内存,所以改变引用并不改变原始的String的值,StringBuffer可以
------解决方案--------------------
最简单的区别办法就是:我一眼就能看出来
这段代码将一个为"lllll"的字符串传入diandao()中,输出应该是"lllll" 是引用传递,不是值传递
为什么? 传的参数是对象类型或是数据,那一定是 引用传递
说说下概念:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值
引用传递:也称地址传递,方法调用时,实际参数的引用(地址,而不是参数值)被传递给方法中的形式参数,在方法执行
中对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数的值的改变将会影响实际参数的值。
------解决方案--------------------
引用传参和值传参(简单来说):
值传参 是将copy一份,是两个不同。
引用: 是将地址传过去, 是同一个。