引数
日本語 | 引数 |
英語 | parameter |
ふりがな | ひきすう、いんすう |
フリガナ | ヒキスウ、インスウ |
メソッドを呼び出す際に渡された値を受け取る変数。
メソッドは「戻り値 メソッド名( 引数の型 引数の変数 )」という書式で「引数」を指定することができる。
形式は「引数宣言」とほぼ同じだが、「初期化」を行うことはできない。
複数の引数を宣言する場合には「戻り値 メソッド名( 引数の型 引数の変数1, 引数の型 引数の変数2, 引数の型 引数の変数3 )」という形式で行う。
呼び出す際に「メソッド名( 引数に渡す値 );」という書式で「引数の変数」に「引数に渡す値」をコピーすることができる。
このコピーは、変数の代入と全く同じである。
メソッドの中では、引数はローカル変数と同じ扱いとなり、普通のローカル変数と全く同じように使用できる。
メソッドから抜けた際には、引数はスコープから外れるため寿命が来て使用することができなくなる。この点もローカル変数と同様。
引数に渡された値はあくまでコピーであり、この値をどう変えようと、呼び出し元の変数にはなんら影響しない。
ただし、これは「値の変更」の話である。もしこの値が「インスタンスへの参照」の場合、つまり引数がクラスもしくは配列の場合には、呼び出し元のインスタンスに対して操作できることになるため注意が必要である。
メソッドの引数は、呼び出し時に省略したり変更したりすることはできない。
メソッドの呼び出し方法にバリエーションを持たせる場合には「オーバーロード」でメソッドを複数用意する必要がある。
メソッドは「戻り値 メソッド名( 引数の型 引数の変数 )」という書式で「引数」を指定することができる。
形式は「引数宣言」とほぼ同じだが、「初期化」を行うことはできない。
複数の引数を宣言する場合には「戻り値 メソッド名( 引数の型 引数の変数1, 引数の型 引数の変数2, 引数の型 引数の変数3 )」という形式で行う。
呼び出す際に「メソッド名( 引数に渡す値 );」という書式で「引数の変数」に「引数に渡す値」をコピーすることができる。
このコピーは、変数の代入と全く同じである。
メソッドの中では、引数はローカル変数と同じ扱いとなり、普通のローカル変数と全く同じように使用できる。
メソッドから抜けた際には、引数はスコープから外れるため寿命が来て使用することができなくなる。この点もローカル変数と同様。
引数に渡された値はあくまでコピーであり、この値をどう変えようと、呼び出し元の変数にはなんら影響しない。
ただし、これは「値の変更」の話である。もしこの値が「インスタンスへの参照」の場合、つまり引数がクラスもしくは配列の場合には、呼び出し元のインスタンスに対して操作できることになるため注意が必要である。
メソッドの引数は、呼び出し時に省略したり変更したりすることはできない。
メソッドの呼び出し方法にバリエーションを持たせる場合には「オーバーロード」でメソッドを複数用意する必要がある。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
// ↓このargsも引数です。
public static void main( String[] args )
{
// とりあえず変数の準備。
Sample sample = new Sample();
int i = 100;
String string = "あいうえお";
StringBuffer strbuf = new StringBuffer();
strbuf.append( "かきくけこ" );
// メソッドを呼び出す前に、出力します。
System.out.println( i );
System.out.println( string );
System.out.println( strbuf.toString() );
// 100
// あいうえお
// かきくけこ
// method3Parameter()メソッドを呼び出します。
sample.method3Parameter( i, string, strbuf );
// 100
// あいうえお
// かきくけこ
// メソッドを呼び出した後に、出力します。
System.out.println( i );
System.out.println( string );
System.out.println( strbuf.toString() );
// 100
// あいうえお
// かきくけこさしすせそ
}
/**
* 引数を3つ持つメソッド。
*/
private void method3Parameter( int data, String name, StringBuffer retMessage )
{
// とりあえず渡された引数を全部出力します。
System.out.println( "Sample#method3Parameter()" );
System.out.println( data );
System.out.println( name );
System.out.println( retMessage );
// 引数に入っているのは、元々の変数に入っていた値のコピーです。
// dataにはiに格納されていた数値100のコピー、
// nameにはstringに格納されていた、Stringクラスのインスタンスへの参照のコピー、
// retMessageにはstrbufに格納されていた、StringBufferクラスのインスタンスへの参照のコピーが
// 渡されています。
// 特にnameとretMessageは、参照が渡されているだけで、
// インスタンス全然関係ないことに注意してください。
data = 1000;
// このように引数の値を変更しても、呼び出し元の変数iには
// なんの影響もありません。dataには、iの値のコピーが格納されていた
// だけだからです。
// retMessageに文字列を追加します。
retMessage.append( "さしすせそ" );
// これで、最初にnewしたStringBufferクラスのインスタンスに文字列を追加しました。
// 理論上は、nameもクラスなので同じような処理ができるのですが、
// Stringクラスには「格納している文字列を変更する」機能がないのでできません。
name = "たちつてと";
// これだと、nameに格納されている参照が、新しく作られた
// Stringクラスのインスタンスへの参照に置き換えられただけなので、
// 呼び出し元で持っているnameにはなんの影響もありません。
}
}
public class Sample
{
// ↓このargsも引数です。
public static void main( String[] args )
{
// とりあえず変数の準備。
Sample sample = new Sample();
int i = 100;
String string = "あいうえお";
StringBuffer strbuf = new StringBuffer();
strbuf.append( "かきくけこ" );
// メソッドを呼び出す前に、出力します。
System.out.println( i );
System.out.println( string );
System.out.println( strbuf.toString() );
// 100
// あいうえお
// かきくけこ
// method3Parameter()メソッドを呼び出します。
sample.method3Parameter( i, string, strbuf );
// 100
// あいうえお
// かきくけこ
// メソッドを呼び出した後に、出力します。
System.out.println( i );
System.out.println( string );
System.out.println( strbuf.toString() );
// 100
// あいうえお
// かきくけこさしすせそ
}
/**
* 引数を3つ持つメソッド。
*/
private void method3Parameter( int data, String name, StringBuffer retMessage )
{
// とりあえず渡された引数を全部出力します。
System.out.println( "Sample#method3Parameter()" );
System.out.println( data );
System.out.println( name );
System.out.println( retMessage );
// 引数に入っているのは、元々の変数に入っていた値のコピーです。
// dataにはiに格納されていた数値100のコピー、
// nameにはstringに格納されていた、Stringクラスのインスタンスへの参照のコピー、
// retMessageにはstrbufに格納されていた、StringBufferクラスのインスタンスへの参照のコピーが
// 渡されています。
// 特にnameとretMessageは、参照が渡されているだけで、
// インスタンス全然関係ないことに注意してください。
data = 1000;
// このように引数の値を変更しても、呼び出し元の変数iには
// なんの影響もありません。dataには、iの値のコピーが格納されていた
// だけだからです。
// retMessageに文字列を追加します。
retMessage.append( "さしすせそ" );
// これで、最初にnewしたStringBufferクラスのインスタンスに文字列を追加しました。
// 理論上は、nameもクラスなので同じような処理ができるのですが、
// Stringクラスには「格納している文字列を変更する」機能がないのでできません。
name = "たちつてと";
// これだと、nameに格納されている参照が、新しく作られた
// Stringクラスのインスタンスへの参照に置き換えられただけなので、
// 呼び出し元で持っているnameにはなんの影響もありません。
}
}
// Sample.java public class Sample { // ↓このargsも引数です。 public static void main( String[] args ) { // とりあえず変数の準備。 Sample sample = new Sample(); int i = 100; String string = "あいうえお"; StringBuffer strbuf = new StringBuffer(); strbuf.append( "かきくけこ" ); // メソッドを呼び出す前に、出力します。 System.out.println( i ); System.out.println( string ); System.out.println( strbuf.toString() ); // 100 // あいうえお // かきくけこ // method3Parameter()メソッドを呼び出します。 sample.method3Parameter( i, string, strbuf ); // 100 // あいうえお // かきくけこ // メソッドを呼び出した後に、出力します。 System.out.println( i ); System.out.println( string ); System.out.println( strbuf.toString() ); // 100 // あいうえお // かきくけこさしすせそ } /** * 引数を3つ持つメソッド。 */ private void method3Parameter( int data, String name, StringBuffer retMessage ) { // とりあえず渡された引数を全部出力します。 System.out.println( "Sample#method3Parameter()" ); System.out.println( data ); System.out.println( name ); System.out.println( retMessage ); // 引数に入っているのは、元々の変数に入っていた値のコピーです。 // dataにはiに格納されていた数値100のコピー、 // nameにはstringに格納されていた、Stringクラスのインスタンスへの参照のコピー、 // retMessageにはstrbufに格納されていた、StringBufferクラスのインスタンスへの参照のコピーが // 渡されています。 // 特にnameとretMessageは、参照が渡されているだけで、 // インスタンス全然関係ないことに注意してください。 data = 1000; // このように引数の値を変更しても、呼び出し元の変数iには // なんの影響もありません。dataには、iの値のコピーが格納されていた // だけだからです。 // retMessageに文字列を追加します。 retMessage.append( "さしすせそ" ); // これで、最初にnewしたStringBufferクラスのインスタンスに文字列を追加しました。 // 理論上は、nameもクラスなので同じような処理ができるのですが、 // Stringクラスには「格納している文字列を変更する」機能がないのでできません。 name = "たちつてと"; // これだと、nameに格納されている参照が、新しく作られた // Stringクラスのインスタンスへの参照に置き換えられただけなので、 // 呼び出し元で持っているnameにはなんの影響もありません。 } }
「解説」に含まれているページ
- (
- ,
- 2進数
- <jsp:useBean>
- @param
- abstract
- args
- ArrayList
- ASCII
- Boolean
- Byte
- ByteArrayInputStream
- ByteArrayOutputStream
- Character
- CharArrayReader
- CharArrayWriter
- Comparator
- compareTo
- concat
- Cookie
- doPost
- Double
- equals
- FileOutputStream
- FilterInputStream
- FilterOutputStream
- FilterReader
- FilterWriter
- finalメソッド
- Float
- getBytes
- Graphics
- HashMap
- HttpServletRequest
- HttpServletResponse
- HttpSession
- IANA
- IllegalArgumentException
- InputStreamReader
- Integer
- ISO-8859-1
- Iterable<T>
- java.sql.Date
- JSP宣言
- JSP暗黙オブジェクト
- Logger
- Long
- main
- matches
- MS932
- new
- OutputStream
- OutputStreamWriter
- PreparedStatement
- printStackTrace
- privateメソッド
- protectedメソッド
- publicメソッド
- Reader
- RequestDispatcher
- SequenceInputStream
- setter
- Short
- sleep
- staticメソッド
- static初期化子
- String
- StringReader
- StringTokenizer
- StringWriter
- substring
- superメソッド
- synchronizedメソッド
- this
- Timestamp
- toString
- URLEncoder
- US-ASCII
- Writer
- アサーション
- インターフェイス
- オペランド
- オーバーライド
- オーバーロード
- クライアント
- コマンドライン引数
- シグネチャー
- ジェネリックメソッド
- ソケット
- ソート
- テストファースト
- デフォルト
- デフォルトコンストラクタ
- バイト入力ストリーム
- バイト出力ストリーム
- パラメーター
- プリペアードステートメント
- ポリモーフィズム
- メソッド
- メソッド呼び出し変換
- モーダルダイアログ
- ラッパー
- リクエストパラメーター
- リフレクション
- レスポンス
- レスポンスヘッダー
- ローカル変数
- ローカル変数宣言
- ワイドニング変換
- 入力フォーム
- 再帰呼び出し
- 再描画
- 切り上げ
- 切り捨て
- 副作用
- 匿名クラス
- 参照
- 右オペランド
- 四捨五入
- 変数
- 変数宣言
- 契約による設計
- 左オペランド
- 引数
- 戻り値
- 描画
- 整数リテラル
- 文字コード
- 文字入力ストリーム
- 文字出力ストリーム
- 浮動小数点リテラル
- 演算子
- 識別子
- 配列
- 関数
「サンプルプログラムとか」に含まれているページ
- (
- ,
- 2進数
- <jsp:useBean>
- abstract
- args
- ArrayList
- ASCII
- assert
- AssertionError
- BigDecimal
- compareTo
- Cookie
- CP932
- Enumeration
- Error
- EUC
- EUC-JP
- FilterInputStream
- FilterOutputStream
- FilterReader
- FilterWriter
- finalメソッド
- GET
- getBytes
- Graphics
- HashMap
- HEAD
- HTTP
- IANA
- IllegalArgumentException
- implements
- INSERT
- interface
- InvocationTargetException
- ISO-10646-UCS-2
- ISO-2022-JP
- ISO-8859-1
- JavaBeans
- JUnit
- main
- new
- Reader
- Shift_JIS
- sleep
- StringTokenizer
- substring
- TestCase
- this
- UCS-2
- Unicode
- URLDecoder
- URLEncoder
- US-ASCII
- UTF-8
- Windows-31J
- 「-」
- 「~」
- アサーション
- インスタンス初期化ブロック
- インスタンス初期化子
- インターフェイス
- エイリアス
- エンコーディング
- エンコード
- オーバーライド
- クッキー
- コマンドライン引数
- コンストラクタ
- シグネチャー
- シフトJIS
- ジェネリッククラス
- ジェネリックメソッド
- ステートレス
- ダイアログ
- ダンプ
- テストファースト
- デコード
- デフォルトコンストラクタ
- トークン
- パラメーター
- ブロックします
- ポリモーフィズム
- メソッド
- モーダルダイアログ
- モードレスダイアログ
- ラッパー
- リクエスト
- リクエストヘッダー
- リフレクション
- 丸数字
- 内部クラス
- 参照
- 変数宣言
- 契約による設計
- 引数
- 抽象クラス
- 抽象メソッド
- 文字コード
- 文字化け
- 未定義
- 識別子