2016.01.29
変数値の交換
はじめに
ここでは、2つ変数の値を入れ替える方法について説明します。この入れ替えは、いろいろな場面で使われますので、ぜひ参考にしてください。
スワップのイメージ
まず、変数の値を入れ替える(SWAP、スワップという)とは、どういうことかを書いておきます。
例えば、aとbという名前の2つのint型変数があって、それらがa=10、b=25であったとします。2つの変数aとbの値を交換するとは、a=25、b=10にするということです。
b=25であったとします。2つの変数aとbの値を交換するとは、a=25、b=10にするということです。
Javaソースコード
ソースコードを書くと以下のようになります。
Swap1.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018
public class Swap1 { public static void main( String[] args ) { // 値を代入 int a = 10; int b = 25; // 変数の値を表示 System.out.println( "交換前 : a=" + a + " b=" + b ); // 交換処理 int w = a; // 一時変数wにaを代入 a = b; b = w; // 交換結果を表示 System.out.println( "交換後 : a=" + a + " b=" + b ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Swap1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Swap1.java
実行
C:\talavax\javasample>java Swap1
実行結果
交換前 : a=10 b=25 交換後 : a=25 b=10
変数aとbの値が入れ替わっています。
010 011 012 013
// 交換処理 int w = a; // 一時変数wにaを代入 a = b; b = w;
変数aの値を変数wに代入してします。そのあと、変数aに変数bの値を代入し、変数bに変数wの値を代入しています。変数wを使う理由は、12行目のa = b;でaとbが同じ値になり、元のaの値が無くなってしまうからです。変数wに元のaの値を代入しておくことで、bに代入する値がなくなることを防いでいます。
値の交換に失敗する例
興味のある方は、交換処理を以下のように変えて試してみてください。交換がうまくいかないことが確認できます。
a = b; b = a;
a=bで、bの値がaに代入され、元のaの値が変わります。そのaの値をb=aで、bに代入しているので交換に失敗します。
以上です。