Java 中的值傳遞和引用傳遞問題
阿新 • • 發佈:2018-12-09
Java 中的值傳遞和引用傳遞問題
public class Operation { int data = 50; void change(int data) { data = data + 100; } public static void main(String[] args) { Operation op = new Operation(); System.out.println("before change: " + op.data); op.change(200); System.out.println("after change: " + op.data); } }
點選檢視結果
before change: 50
after change: 50
public class Operation2 { int data = 50; void change(Operation2 op) { op.data = op.data + 100; } public static void main(String args[]) { Operation2 op = new Operation2(); System.out.println("before change " + op.data); op.change(op); System.out.println("after change " + op.data); } }
點選檢視結果
before change 50
after change 150
Dog 類
public class Dog { String name; Dog(String name) { this.name = name; } String getName() { return this.name; } void setName(String name) { this.name = name; } String getObjectAddress() { return super.toString(); } }
public class PassByValueExample {
public static void main(String[] args) {
Dog dog = new Dog("A");
System.out.println(dog.getObjectAddress());
System.out.println("************************");
func(dog);
System.out.println("************************");
System.out.println(dog.getObjectAddress());
System.out.println(dog.getName());
}
private static void func(Dog dog) {
System.out.println(dog.getObjectAddress());
dog = new Dog("B");
System.out.println(dog.getObjectAddress());
System.out.println(dog.getName());
}
}
點選檢視結果
Java基礎加強.引數傳遞[email protected]
************************
Java基礎加強.引數傳遞[email protected]
Java基礎加強.引數傳遞[email protected]
B
************************
Java基礎加強.引數傳遞[email protected]
A
public class PassByValueExample1 {
public static void main(String[] args) {
Dog dog = new Dog("A");
func(dog);
System.out.println(dog.getName());
}
private static void func(Dog dog) {
dog.setName("B");
}
}
點選檢視結果
B