Javaのswap関数(再現)

まず、C言語でのスワップ関数の設計を確認しましょう

値渡し:2つの数値を根本的に交換することはできません

#include <stdio.h> void swap(int a、int b){ int temp; 
temp = a; a = b; b = 一時; 
}





 


参考文献:C言語では、アドレスを呼び出す必要があります

#include <stdio.h> void swap(int&a、intb){ int temp; 
temp = a; a = b; b = 一時; 
}





 


それが問題です。Javaにはポインタがなく、通常の変数への参照もありません。通常のタイプの変数への参照を渡すにはどうすればよいですか?

方法1:配列を使用する

public  static  void swap(int [] data、int a、int b){ 

int temp; 

temp = data [a]; data [a] = data [b]; data [b] = temp; 

}

 


方法2(誤解を​​招く):JavaのパッケージクラスIntegerを介して参照を渡します。結果:失敗。Javaのパッケージクラスはデータフィールドを変更できないため、個人的に理解します。Javaは、参照であるパッケージクラスの整数データアドレスを提供しません。しかし、表面データを提供する

方法3:独自のパッケージクラスMyIntegerを定義する

静的 クラスMyInteger { 
 private  int x; 
public MyInteger(int x){
 this .x = x; 
} 
public  int getValue(){ 
 return x; 
} 
public  void changeValue(int x){ 
 this .x = x; 
} 
} 

public  static  void swap(MyInteger a、MyInteger b){
 int t = a.getValue(); 
a.changeValue(b.getValue()); 
b.changeValue(t); 
}

 


方法4:外部インライン、このクラスを直接使用

パブリック クラスSort {
  int a、b;
 public Sort(int a、int b){
      this .a = a;
     this .b = b; 
 } 
 public  void swap(){
      int temp; 
     temp = a; a = b; b = 一時; 
 } 
}

 

上記、個人的な参照
:https://blog.csdn.net/dadoneo/article/details/6577976

おすすめ

転載: www.cnblogs.com/cocobear9/p/12695257.html