教育・子育て

Java chaputer15 まとめ 前編

マんタ's icon'
  • マんタ
  • 2021/08/02 01:56

おはようございます!

今回はchaputer15まとめ前編です

 

参照はJava言語ではとても重要な概念です。

しかし、理解しにくい部分でもあるので注意してみていきます。

 

オブジェクトは参照で操作

参照とは何かというと結構答えにくいものです。

なので、図で説明するとこんな感じになりますwww

右側が作成されたオブジェクト。

それが変数diceに格納された左側の状態になります。

しかし、実際は少し違って下の図のような感じです。

で、左側のdiceの中にあるのヒーブジェクトではなく参照というもの・・・・

オブジェクトは右端にある青いツイタテミタイナブロックで、変数の中でなくヒーブと呼ばれるメモリ領域にあります。

参照は単なるオブジェクトへのリンク情報で、Javaシステムでは、疑似的なオブジェクトとみなして使うことができるようになっています。

1.参照を使う理由

参照を使う理由は、サイズが小さいためコピーに時間がかかりません。

2.参照型

Java言語はすべての要素に何らかの型があり、参照の型は参照型という。

同じ参照型でもその参照がリンクしているオブジェクトの種類によってさらに

クラス型、配列型、インターフェイス型に分けられます。

配列もサイズが大きくなるので、本体はヒーブメモリに置き、

それを参照を使い操作します。

配列はオブジェクトの一種です。

配列についてはもう少し先で出てくるのでその時に詳しく学習します。

☆参照型変数の代入はリモコンが増えるだけ。

参照型の変数を他の変数に代入しても参照がコピーされるだけで、新しいオブジェクトができるわけではではない。

イメージとしてはこんな感じです。

 

参照型変数の代入はリモコンが増えるだけという説明をしたので、今度は実際に組んで確かめてみます。

その前にここでも同じくDiceクラスを作っておきます

package exercise;
public class Dice {
private int val;
private String color;
 
public Dice (int val,String color) {
 this.val = val;
 this.color = color;
}
public Dice(String color) {
 this(1,color);
}  
public Dice() {
 this(1,"白");
 
}
public void play() {
 val=(int)(Math.random()*6)+1;// ここにコードを挿入
}
 
public int getVal() {
 return val;
}
public void setVal(int val) {
 this.val=val;
}
public String getColor() {
 return color;
}
public void setColor(String color) {
 this.color=color;
 
}
}

で、

参照型の変数代入のプログラムがコチラ

package exercise;
public class Sample_sample1 {

public static void main(String[] args) {
 Dice dice1 = new Dice();
 Dice dice2 = dice1;
 dice1.play();
 System.out.println("dice1.getVal() ="+dice1.getVal());
 System.out.println("dice2.getVal() ="+dice2.getVal());
 
 // ここにコードを挿入


}

}

}

こんな感じで( ^ω^)・・・

参照型変数dice1の値をdice2に代入し同じオブジェクトを参照することを確かめます。

 

Diceオブジェクトを参照をdice1に代入

次に、dice1を同じDice型の変数dice2に代入

ここでは、新たにオブジェクトを作ったわけではなく、dice1にある参照をdice2に代入(コピー)しただけです。

 

今回は最後にポイントを説明して終わりにしようかな?

point  参照型の変数の代入

 

参照型変数の代入で、A=B;にすると、AにはBと同じ参照がコピーされるだけ

Java言語では、new演算子によってのみ、オブジェクト新規作成が可能。

 

 

javaでは特別な単語が何かの値を表すために使います。

よく使われるものは truefalse。

これは bloonean型の 値でした。

では、nullは何型のどんな値でしょうか?

nullは参照の一種!!

ということで前置きはこの辺にして( ´艸`)

nullについて詳しく学習していきます。

 

1.nullとは?

nullは、どんなオブジェクトにもリンクしてない参照です。

つまり、

参照型で、有効なリンク情報を持たない値(リテラル)

です。

イメージはこんな感じ

nullは参照型の値ではありますが、無効な値です。

2.nullの用途

nullが無効な値と言っても参照型であることは間違いないありません。

ちなみに参照型の変数ならどんな型の変数にでもnullを代入し初期化することが可能です。

上の図はDice型の変数に代入した時のイメージ・・・

nullがセットされているのでコンパイラはdiceには参照型の変数が入っているとみなします。

ただ、次のようなコードを書いてもコンパイルエラーにならないので注意!!!

Dice dice = null();
dice.play();

 

これは、コンパイルエラーにはなりませんが、実行すると実行例外というものが起こります。

このエラー・・・Javaではよく目にするエラーです。

そのエラーを実際に見ていきます。

package exercise;
import sample.Dice;
public class Sample_sample {
public static void main(String[] args) {
 Dice dice=null;
 dice.play();
 // ここにコードを挿入

}

}

 

で、Ecripsで起動してみるとこのようなエラーメッセージが出ます

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "exercise.Dice.play()" because "dice" is null

at exercise.Sample_sample.main(Sample_sample.java)

NullPointerException:

簡単に言うと

オブジェクトにアクセスしようとしたがnullだった

というものです。

あと、宣言しただけでは何も入ってない空箱の状態ですので・・・

初期化されていない変数を使って何かしようとするとコンパイルエラーになるので注意しましょうwww

 

ここまでで、chaputer15まとめ前編終了

ご覧いただきありがとうございました。

BY マんタ

参考書は__________________________________

新わかりやすい Java

川場 隆  Kawaba Takashi

秀和システム

 

 

 

 

 

Article tip 0人がサポートしています
獲得ALIS: Article like 81.98 ALIS Article tip 0.00 ALIS
マんタ's icon'
  • マんタ
  • @25kit6
11月になりましたねwwwだんだん寒くなって来たしそろそろ本格的な冬モードかな?怪しげな風邪と菌も流行ってるみたいだし予防と消毒はしっかりしないとね!

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

防犯意識 マーキング 下書き供養④

Like token Tip token
24.07 ALIS
Eye catch
他カテゴリ

BCAAは本当に必要なのか?徹底的調査

Like token Tip token
1.20 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
トラベル

無料案内所という職業

Like token Tip token
84.20 ALIS
Eye catch
クリプト

続・NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
6.37 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
教育・子育て

【科学(化学)】進化に必要だった猛毒のガス~酸素~

Like token Tip token
25.63 ALIS
Eye catch
他カテゴリ

京都のきーひん、神戸のこーへん

Like token Tip token
12.10 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
124.82 ALIS