30/09/2018, 21:33

Hàm swap hai số trong Java

Mình mới học Java. Mọi người cho mình tư vấn hàm swap 2 số trong java. Không giống trong c hay c++ có con trỏ vậy ở đây swap như thế nào?

mt viết 23:39 ngày 30/09/2018

Trong Java thì không thể viết hàm swap như C++ vì không có “pass by reference”.
Nhưng nếu bạn vẫn thích có hàm swap thì có thể viết như thế này

int x = 6, y = 9;
x = swap(y, y = x);
...
..
.
int swap(int y, int x) {
    return y;
}
viết 23:34 ngày 30/09/2018

viết kiểu trên rất là phiêu lưu, lỡ y=x được xét trước y thì sao? Khi truyền tham số vào 1 hàm thì đâu nhất thiết phải truyền tham số từ trái sang phải.

void f(int a, int b, int c)

a,b,c được truyền “cùng lúc”, nghĩa là thứ tự ko quan trọng, nghĩa là xét b rồi a rồi c cũng được, a rồi c rồi b cũng được, ko nhất thiết phải là a, b, c.

mt viết 23:48 ngày 30/09/2018

ừ mình nghĩ là ko nên dùng như vậy trong software thực tế.
Nhưng trong java thì chắc chắn là từ trái sang phải JLS 15.7.4

In a method or constructor invocation or class instance creation
expression, argument expressions may appear within the parentheses,
separated by commas. Each argument expression appears to be fully
evaluated before any part of any argument expression to its right.

viết 23:36 ngày 30/09/2018

mình mới gu gồ thêm, đáng ngạc nhiên là rất nhiều ngôn ngữ như Java, C#, Python, PHP, Javascript đều bảo đảm là xét tham số truyền vào từ trái sang phải. Chỉ có C và C++ là ko. Ko biết còn ngôn ngữ nào ko đảm bảo trái phải nữa ko

Kudo Vĩ viết 23:40 ngày 30/09/2018

Vậy các bạn cho mình 1 code Java đầy đủ của Swap được không?

Nguyen Ca viết 23:48 ngày 30/09/2018

Không swap được: Muốn thì tạo object riêng với property là kiểu số, rồi dùng object này đế pass by value.

Reoteu Ray viết 23:43 ngày 30/09/2018

trong gia java không có kiểu con trỏ hay kiểu tham chiếu nên muốn truyền tham chiếu thì chỉ có cách là dùng các kiểu dữ liệu tham chiếu để làm đối số
vd:
static void swap ( object A ){

}

static void main(){
object B = new object();
swap(B);

}

Bài liên quan
0