JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 副作用とは

副作用

日本語 副作用
英語 side effect
ふりがな ふくさよう
フリガナ フクサヨウ

解説

演算によって変数の中身が変化すること。
 
式による演算の結果、式に使用した変数に変化が起こることを「副作用」と言う。
以下の演算子を使用すると副作用が発生する。
 
=演算子
+= 演算子
-= 演算子
*= 演算子
/= 演算子
&= 演算子
|= 演算子
^= 演算子
%= 演算子
<<= 演算子
>>= 演算子
>>>= 演算子
++演算子
--演算子
 
つまり、代入演算子複合代入演算子を含む)、インクリメント演算子及びデクリメント演算子が該当する。

これらの演算子は、むしろ「変数の値を変更する」ことが目的のため、それを「副作用」と呼ぶのは抵抗があるかもしれない。
これは逆に、演算子というものはそもそも「副作用を発生させない」ものであり、オペランド変数を使用してもその変数に影響は与えないことが普通、という点から生まれた表現といえる。
 
また、メソッド引数参照を渡し、メソッドの側で参照先の変数を変更することも副作用である。
ただし、一般に「副作用」という場合には、演算子によるものを指すことが多い。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 「=演算子」は、左オペランドの値を
        // 右オペランドの値に書き換えます。
        int i = 100;
        System.out.println( i );
        // 100

        // 「++演算子」は、オペランドの値を1増やします。
        i = 200;
        ++i;
        System.out.println( i );
        // 201

        // これらが「副作用」に該当します。
        // 副作用を持たない演算子は、オペランドに変数を
        // 使用しても、変数の値を変更しません。
        int iL = 100;
        int iR = 200;
        // たとえば、+演算子は副作用を持たないため、
        // 「i1 + i2」の結果、i1とi2の値は変化しません。
        i = iL + iR;
        System.out.println( iL );
        System.out.println( iR );
        // 100
        // 200
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 「=演算子」は、左オペランドの値を
        // 右オペランドの値に書き換えます。
        int i = 100;
        System.out.println( i );
        // 100

        // 「++演算子」は、オペランドの値を1増やします。
        i = 200;
        ++i;
        System.out.println( i );
        // 201

        // これらが「副作用」に該当します。
        // 副作用を持たない演算子は、オペランドに変数を
        // 使用しても、変数の値を変更しません。
        int iL = 100;
        int iR = 200;
        // たとえば、+演算子は副作用を持たないため、
        // 「i1 + i2」の結果、i1とi2の値は変化しません。
        i = iL + iR;
        System.out.println( iL );
        System.out.println( iR );
        // 100
        // 200
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/02/25
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。