- 1、java 交換值
- 2、java語法問題,不理解為什麼這樣可以交換?
- 3、java如何實現2個數之間互換
1、對於原始數據類型,也就是int、 long、char之類的類型,是傳值的,如果你在方法中修改了值,方法調用結束後,那個變量的值沒用改變。
2、對於對象類型,也就是Object的子類,如果你在方法中修改了它的成員的值,那個修改是生效的,方法調用結束後,它的成員是新的值,但是如果你把它指向一個其它的對象,方法調用結束後,原來對它的引用並沒用指向新的對象。
因此在change方法中交換x,y是成功的,但是不會影響到static x ,y的值,在change方法中輸出是可以得到交換成功的x,y,因為它們都是基本類型。可以通過一個int[]的返回值來得到交換後的數值。
簡單點說
1、基本類型作為參數傳遞時,是傳遞值的拷貝,無論你怎麼改變這個拷貝,原值是不會改變的
2、在Java中對象作為參數傳遞時,是把對象在內存中的地址拷貝了一份傳給了參數。
Code; 僅供參考!
輸出結果; 僅供參考!
基本數據類型的變量作為方法的參數傳遞時, 形參變量數值的改變通常不會影響到實參變量的數值, 因為兩個變量都有各自獨立的內存空間, 最終將結果在 oSet 中交換
利用異或(a^b)^b 等於a,進行交互,不需要設置臨時變量也不會超範圍。代碼如下:
import java.util.Scanner;
public class woo {
public static void main(String args[]) {
Scanner scan =new Scanner(System.in);
System.out.println(“輸入兩個數a, b”);
int a = scan.nextByte();
int b = scan.nextByte();
System.out.printf(“交換前:a = %d, b = %d\n”, a, b);
a = a^b;
b = a^b;
a = a^b;
System.out.printf(“交換後:a = %d, b = %d”, a, b);
}
}
擴展資料:
值傳遞就是在方法調用的時候,實參是將自己的一份拷貝賦給形參,在方法內,對該參數值的修改不影響原來實參。
引用傳遞是在方法調用的時候,實參將自己的地址傳遞給形參,此時方法內對該參數值的改變,就是對該實參的實際操作。
在java中只有一種傳遞方式,那就是值傳遞.可能比較讓人迷惑的就是java中的對象傳遞時,對形參的改變依然會意向到該對象的內容。
參考資料:
百度百科——參數傳遞
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126124.html