Truyền đối số tham chiếu Pass-by-reference
Test.java
Java Core 2017
package com.demo; public class Test { public static void main(String[] args) { Mytest mytest = new Mytest(); mytest.a = 1; System.out.println("Test's x (in main) is: " + mytest.a); doSomething(mytest); System.out.println("Test's x (in main) is: " + mytest.a); } public static void doSomething(Mytest mytest) { mytest = new Mytest(2); //Pass by reference System.out.println("Test's x (in doSomething) is: " + mytest.a); } public static class Mytest { int a; public Mytest(int a) { this.a = a; } public Mytest() { } } }
Output:
Test's x (in main) is: 1
Test's x (in doSomething) is: 2
Test's x (in main) is: 1
Truyền đối số giá trị Pass-by-value
Test.java
Java Core 2017
package com.demo;
public class Test {
public static void main(String[] args) {
Mytest mytest = new Mytest();
mytest.a = 1;
System.out.println("Test's x (in main) is: " + mytest.a);
doSomething(mytest);
System.out.println("Test's x (in main) is: " + mytest.a);
}
public static void doSomething(Mytest mytest) {
mytest.a = 2; //Pass by value
System.out.println("Test's x (in doSomething) is: " + mytest.a);
}
public static class Mytest {
int a;
}
}
Output: Test's x (in main) is: 1 Test's x (in doSomething) is: 2 Test's x (in main) is: 2
Test.java
Java Core 2017
package com.demo; public class Test { public static void main(String[] args) { int a = 1; System.out.println("a (in main) is: " + a); doSomething(a); System.out.println("a (in main) is: " + a); } public static void doSomething(int a) { a = 2; //Pass by value (VD này cần xem Immutable String là gì) System.out.println("a (in doSomething) is: " + a); } }
Output:
a (in main) is: 1
a (in doSomething) is: 2
a (in main) is: 1
[1]. Khi khởi tạo đối tượng Mytest, biến mytest sẽ chứa địa chỉ của vùng nhớ đối tượng Mytest, đối tượng Mytest được lưu ở Heap. Và giá trị của biến mytest được lưu ở Stack. Biến kiểu tham trị bao gồm các kiểu nguyên thủy của JAVA như: int, long, double…
Biến kiểu tham chiếu bao gồm: String, Integer, Array, kiểu đối tượng…
0 nhận xét:
Post a Comment