JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 未定義とは

未定義

日本語 未定義
英語 undefined
ふりがな みていぎ
フリガナ ミテイギ

解説

定義されていないこと。
 
ある処理を実装を「定義」という。たとえばメソッド実装は「定義」である。
この「定義」が作られていない、もしくは存在しないことを「未定義」と言う。
 
また、「結果が決まっていない」という意味でも使用される。
定義がある、ということは「入力」に対する「出力」が決められている、ということである。
ということは逆に、未定義とは「どういう結果になるか分からない」ということを意味する。
この場合、一応その処理を実できるが、結果が決まっていないということであり、それこそハードディスクが完全に消去されても文句を言うことはできない。
そのため、結果が未定義の処理を実してはいけない。
 
Javaでは、言語仕様上の未定義はほとんど存在しない。
Javaの元となったC言語では、言語が作られた時代が古いこと、様々なOSの仕様に依存することもあり、言語仕様が正確には決められておらず、未定義の機能が多かったが、Javaではそういうことはほとんどない。
そのため、Javaにおける「未定義」とは、ほとんどの場合、前者の「定義が存在しない」という意味である。

参考サイト


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

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

// Sample.java
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // コンパイルエラーで「未定義」が出る場合。
        Integer integerL = new Integer( 100 );
        // int i = integerL + 100;
        // コンパイルエラー:
        // 演算子 + は引き数の型 Integer, int で未定義です。

        // つまり、Integerクラスを使用する+演算子の処理
        // (演算子のオーバーロードメソッド?)は、
        // 定義(実装)が存在しない、という意味です。


        // 「未定義」とは、「どうなるかわからない」という
        // 意味でもあります。
        // たとえば、ArrayListクラスのaddAll()メソッドは、
        // 自分自身が引数に渡された場合の結果は「未定義」と
        // APIリファレンスに書かれています。
        ArrayList arylst = new ArrayList();
        arylst.add( integerL );
        arylst.add( integerL );
        arylst.add( integerL );
        arylst.addAll( arylst );
        forint iF1 = 0; iF1 < arylst.size(); ++iF1 )
        {
            System.out.println( arylst.get( iF1 ) );
        }
        // 100
        // 100
        // 100
        // 100
        // 100
        // 100

        // 一応うまく動きましたが、それは「偶然」うまくいった
        // だけなので、基本的に「未定義」のことはしてはいけません。
    }
}
// Sample.java
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // コンパイルエラーで「未定義」が出る場合。
        Integer integerL = new Integer( 100 );
        // int i = integerL + 100;
        // コンパイルエラー:
        // 演算子 + は引き数の型 Integer, int で未定義です。

        // つまり、Integerクラスを使用する+演算子の処理
        // (演算子のオーバーロードメソッド?)は、
        // 定義(実装)が存在しない、という意味です。


        // 「未定義」とは、「どうなるかわからない」という
        // 意味でもあります。
        // たとえば、ArrayListクラスのaddAll()メソッドは、
        // 自分自身が引数に渡された場合の結果は「未定義」と
        // APIリファレンスに書かれています。
        ArrayList arylst = new ArrayList();
        arylst.add( integerL );
        arylst.add( integerL );
        arylst.add( integerL );
        arylst.addAll( arylst );
        for( int iF1 = 0; iF1 < arylst.size(); ++iF1 )
        {
            System.out.println( arylst.get( iF1 ) );
        }
        // 100
        // 100
        // 100
        // 100
        // 100
        // 100

        // 一応うまく動きましたが、それは「偶然」うまくいった
        // だけなので、基本的に「未定義」のことはしてはいけません。
    }
}

この単語を含むページ

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

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

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