书上说的乱糟糟的,一会按值传,一会按引用传,最后不知道按啥传了。
下面试验了一下交换变量,但是没效果啊,还是输出1和2,变量没换成
- Java code
import javax.swing.*;import java.util.*;import java.math.*;import java.util.Date;//package java.util.*;public class CloneTest{ public static void main(String[] args) { Employee e1 = new Employee(); Employee e2 = new Employee(); e1.age = 1; e2.age = 2; SWAP.swap(e1, e2); System.out.println(e1.age); System.out.println(e2.age); }}class SWAP{ public static void swap(Employee a1, Employee a2) { Employee tmp; tmp = a1; a1 = a2; a2 = tmp; }}class Employee{ public int age; public Employee() { // System.out.println("Employee::Employee()"); } public static void main(String[]args) { // System.out.println("Employee::main"); }}
------解决方案--------------------
像基本类型(int,float,double,char,byte...)这些是按值传递,传递的是值的副本
像数组,类这样的传值是按引用传递,传递的是地址
以上纯属个人观点,坐等大侠指正
------解决方案--------------------
学过C++的都知道。(int,float,double,char,byte...)这些变量传过来的都是值。。在C++中(int @,float @,double @,char @,byte @...)这些都是引用传递的是地址。形参和实参同地址,不同名。
以上纯属个人观点,坐等大侠指正
------解决方案--------------------
按值传递,引用变量内存会创建一个副本,我们通过这个副本来操作源对象。直接把该副本改变引用对象,对原来数据没有任何影响。所以没交换。
------解决方案--------------------
当把参数传进去时,参数本身就不会被修改了,但如果这个参数是对象,对象中的东西可以修改
个人观点哈,望指正
------解决方案--------------------
这个问题怎么老是有人问呢?哎,java里没什么传引用,传值,简单的问题搞的那么复杂。关键要知道怎么存在的内存的,举个例子你就明白了。
- Java code
package test;public class Test1 { /** *@Description: *@author:zhangjp *@Parameter: *@time:2012 Jul 30, 2012 8:47:12 AM */ public static void main(String[] args) { int n = 20; User u = new User(18,"zhangsan"); System.out.println(u); change(u, n); System.out.println(u); System.out.println(n); } public static void change(User u,int i){ i = 25; u.setId(25); }}package test;public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User(int id, String name) { super(); this.id = id; this.name = name; } @Override public String toString() { return "u.id="+id+" "+"u.name="+" "+name; } }
------解决方案--------------------