javaで変数の初期状態
Re: javaで変数の初期状態
public class HogeMaster {
public static void showElement(Integer z)
{
if(z==null)
System.out.println("中身はNull");
else
System.out.println("中身は"+z);
}
public static void main(String[] argv)
{
Integer[] t= new Integer[6];
for(int i=0;i<t.length;i++)
{ showElement(t[i]);}
for(int i=0;i<t.length;i++)
{ t[i]=i*i*i; }
int test=100;
showElement(test);// int型でも大丈夫
showElement(test+t[2]);//もちろん計算も普通に。
for(int i=0;i<t.length;i++)
{ showElement(t[i]);}
for(int i=0;i<t.length;i++)
{ t[i]=null; }
for(int i=0;i<t.length;i++)
{ showElement(t[i]);}
//showElement(test+t[0]);
//もちろん、null要素のInteger classでは例外java.lang.NullPointerExceptionが投げられる。
}
}
なので、nullなど、数値じゃない事を表現したい場合や、
どうしてもオブジェクトであって欲しい場合は、
intの時は、Integer classを使う事で代用できます。
Re: javaで変数の初期状態
お二人とも返信ありがとうございます。
intにnullが入らないことや、代用のクラスを使えばいいことは分かったと思います。
ちなみに、int型の何も入ってない状態(t=0等の変数の初期化、代入を行っていない状態)にすることは出来るのでしょうか?
intにnullが入らないことや、代用のクラスを使えばいいことは分かったと思います。
ちなみに、int型の何も入ってない状態(t=0等の変数の初期化、代入を行っていない状態)にすることは出来るのでしょうか?
Re: javaで変数の初期状態
できません。daj さんが書きました:ちなみに、int型の何も入ってない状態(t=0等の変数の初期化、代入を行っていない状態)にすることは出来るのでしょうか?
よく初心者向けの変数の説明として箱を例に使うことがありますが、実際は箱のような性質はありません。
中身を空にすることはできないのです。
Re: javaで変数の初期状態
int型は整数値しか格納できません。
「-1を何も入っていない状態ということにする」などと心で決めれば、 とすることで、t[0]には何も入っていないことを表せます。
しかし、t[0]には「整数しか入れられない」ので、「何も入っていない」という、整数ではない値(つまりnullのような値)を代入することは不可能です。
ただし、例えばローカル変数で などと変数宣言した直後は、iは「未初期化」の状態になっています。
しかし、iに初期値を代入しないままiの値を読み出せませんから、結局「iに何も入っていない」状態を表すには、
何らかの整数値(例えば-1)を「何も入っていない」と思い込むしかありません。
別の方法として、値が入っているかどうかを示すboolean変数を作ったり、null値を許すためにInteger型を使ったりという方法はあります。
「-1を何も入っていない状態ということにする」などと心で決めれば、 とすることで、t[0]には何も入っていないことを表せます。
しかし、t[0]には「整数しか入れられない」ので、「何も入っていない」という、整数ではない値(つまりnullのような値)を代入することは不可能です。
ただし、例えばローカル変数で などと変数宣言した直後は、iは「未初期化」の状態になっています。
しかし、iに初期値を代入しないままiの値を読み出せませんから、結局「iに何も入っていない」状態を表すには、
何らかの整数値(例えば-1)を「何も入っていない」と思い込むしかありません。
別の方法として、値が入っているかどうかを示すboolean変数を作ったり、null値を許すためにInteger型を使ったりという方法はあります。
int[] t = new int[136];
boolean[] tBlank = new boolean[136];
tBlank[0] = true; // tBlank[n]がtrue ならば t[n]が空ということにする。