2007/9/10 月曜日

Javaにはポインタがない!!

Posted in プログラミング by 管理人 @ 9 月 10, 2007

よくJavaにはポインタがないのでC言語よりもわかりやすい

という人をよく見かける。

確かに明示的なポインタの宣言はJavaにはない。

だがポインタという概念がなくなったわけではないと私は思う。

例えば以下プログラムはどうだろう?

class test{
    public static void main(String[] args){
        tmp a =new tmp();
        tmp b =new tmp();
        a.data=10;
        b.data=20;
        a = b;
        b.data=100;

        System.out.println(”a= ” +a.data);
        System.out.println(”b= ” +b.data);
    }
}
class tmp{
    int data;
}

実行結果は以下の通りである。
a= 100
b= 100

どうだろう?

a=10

b=100

と想像してしまった人はいないだろうか?

どこでa.dataに100という数字が入ってきてしまったんだろう?

問題は

a = b;
の箇所だ。

そうクラスは参照型なのである。

つまりclass tmp aにはクラスのアドレスが格納されている。

これはC言語でいうポインタとほぼ一緒ではないだろうか?

クラスのアドレスが格納されているので

a=b;

でアドレスの参照先が一緒になってしまう。

参照先が一緒なので

b.data=100;

でa.dataも100になってしまうというわけだ。

ポインタという概念がない人にとっては

戸惑ってしまうだろう。

Javaのオブジェクト指向がゼッタイにわかる本―最初からそう教えてくれればいいのに!
Javaのオブジェクト指向がゼッタイにわかる本―最初からそう教えてくれればいいのに! 立山 秀利

秀和システム 2006-05
売り上げランキング : 148137

おすすめ平均 star
starタイトルはあやしいが、結構わかりやすい
starオブジェクト指向って何?っていう初心者に、いいです。

Amazonで詳しく見る by G-Tools

Javaを独習する前に読む本
Javaを独習する前に読む本 青木 峰郎

アスキー 2003-02
売り上げランキング : 269320

おすすめ平均 star
star独習したい人の最初の本に最適
starJavaの世界をのぞくのに最適
starもっと早くこの本に出会いたかった

Amazonで詳しく見る by G-Tools

2007/9/9 日曜日

お勧めいろいろサイト

Posted in IT by 管理人 @ 9 月 9, 2007

私が、いつも見てるサイトや気にってるサイトを紹介してみたいと思います。

独学Linux
Linuxについていろいろと挑戦しています。特にグラフィックなどcompizの設定などはとても詳しく説明しています。

Distro Freak
星の数ほどあるLinuxやUnixなどのディストリービューションを紹介しています。
自分の知らないディストリービューションのことを知れたりでとても楽しいです。

悪態のプログラマ
IT業界特にプログラマの生態についてわかります。
へぇーなるほどいつも関心して読んでます。

それほど間違っていないプログラマ用語辞典
本にもなっているとてもおもしろいプログです。
いつも笑わせてくれます。

XHTML 1.0 CSS 2.0 RSS