JavaA2Z

KAB-studio > プログラミング > JavaA2Z > アドレスとは

アドレス

日本語 住所
英語 address
ふりがな あどれす
フリガナ アドレス

解説

ものの位置を特定するための「住所」。
 
プログラミングでは、主に「変数の、メモリ上の位置」を示す値という意味で使用される。
通常、メモリは1バイトごとに整数値が割り振られている。この値が「アドレス」である。メモリ上に置かれた変数は、その場所をアドレスで特定することができる。
現在のOSは、「仮想メモリ」という、実されたアプリケーションごとに「仮のメモリ」を用意する。仮想メモリは互いに独立しているため、たとえば「Exeファイルを2度実する」場合、それぞれに仮想メモリが作られ、一方がもう一方の仮想メモリにアクセスすることはできない。つまりそれぞれの変数は不可侵である。
 
Javaでは、基本的に「アドレス」という概念は使用しない。
Javaでは、メモリ上の変数に直接アクセスするような処理は「してはいけない」からである。
Javaにおいてアドレスに当たるものは参照値である。new演算子インスタンスを作成した際に返される参照値がアドレスの代わりだが、これは参照変数で受け取ることでのみ使用でき、「整数値」として扱うことはできない。
一応、ObjectクラスのhashCode()メソッドでアドレスを取得することができるが、このアドレスの使い道はない。参照変数に入れ直すことはできず、またこの値で直接メモリにアクセスすることもできない。また、多くのクラスがhashCode()メソッドオーバーライドして「ハッシュコードの取得」という機能を実装しているため、アドレスを取得することはできない。
 
このように、Javaではアドレスという概念をプログラミングで使用することは希である。
C言語C++言語では多用するものだが、その際の「危険性」故に、Javaでは封印されたと考えた方がいいだろう。
 
これとは別に、ネットワーク上の「住所」を示す場合もある。
その場合、「IPアドレス」や「URL」のことを指す。

参考サイト


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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // ObjectクラスのhashCode()メソッドで、アドレスもどきを取得します。
        Object object = new Object();
        int hashCode = object.hashCode();
        System.out.println( hashCode );
        // 24529889

        // この値が、「new Object()」によって作られたインスタンスが
        // 置かれているメモリ上の「アドレス」です。
        // この値はインスタンスごとに異なるため、呼ぶ度に値が変わります。
        System.out.println( new Object().hashCode() );
        System.out.println( new Object().hashCode() );
        System.out.println( new Object().hashCode() );
        // 24105143
        // 32481053
        // 12014584

        // 多くのクラスはhashCode()メソッドをオーバーライドしているため、
        // ほとんどのクラスのインスタンスは取得できません。
        String string = "A";
        hashCode = string.hashCode();
        System.out.println( hashCode );
        // 65

        // 「65」は、'A'の文字コード(10進数形式)です。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // ObjectクラスのhashCode()メソッドで、アドレスもどきを取得します。
        Object object = new Object();
        int hashCode = object.hashCode();
        System.out.println( hashCode );
        // 24529889

        // この値が、「new Object()」によって作られたインスタンスが
        // 置かれているメモリ上の「アドレス」です。
        // この値はインスタンスごとに異なるため、呼ぶ度に値が変わります。
        System.out.println( new Object().hashCode() );
        System.out.println( new Object().hashCode() );
        System.out.println( new Object().hashCode() );
        // 24105143
        // 32481053
        // 12014584

        // 多くのクラスはhashCode()メソッドをオーバーライドしているため、
        // ほとんどのクラスのインスタンスは取得できません。
        String string = "A";
        hashCode = string.hashCode();
        System.out.println( hashCode );
        // 65

        // 「65」は、'A'の文字コード(10進数形式)です。
    }
}

この単語を含むページ

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

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

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