ArrayListってそういうことか

Javaって本当に、型関連が細かいです(PHPがユルすぎるのだという説も ^^;)


PHPだと、
「変数$aに1入れて、その後$aに「あ」を代入して・・・
 $aの型?そんなの、何も言わなくたって1は整数、あは文字列でしょ。
 1に戻してこれを文字列宣言する?まあいいけど。
 え、文字列宣言した1に整数を演算?OKOK、整数型に変更しとくから〜」
・・・てなもんですから ^^;

変数の定義宣言

Classの中、functionの外で変数を宣言しないとならない。
これはPHPでもオブジェクト化すると同様。わからないでもない。

String・・・型?

変数の前に型を宣言。

int a = 1;
String b = "文字列";

わかります。大体この2つを抑えておけば・・・・・・


本曰く。

覚えておこう 基本データ型の8種類
byte 1バイト符号付整数型
short 2バイト符号付整数型
int 4バイト符号付整数型
long 8バイト符号付整数型
float 4バイト浮動小数点型
double 8バイト浮動小数点型
char 2バイト文字型
boolean 真偽型

・・・Stringは? ^^;


本では説明抜けてましたが、調べてみると

  • 「charは2byte(全角1文字まで)」
  • 「Stringはオブジェクト(charの集合体?)」

なのだそうです。。

配列はもっと厳しい

型、あるいは変数名の後ろに [] を付けると配列。(どっちでもいいけどプログラム中では統一しろとのこと)。
定義した後、newを使ってkeyの数を確保。

int arr[];
arr = new int[5];


・・・・・最初に数宣言しなきゃだめですか?
そして、同じ配列にいろんな型の値もっちゃ駄目ですか。そうですか・・・・


これ、コーディングする時どうするんだろう、と悩みながら本をしばらく読み進んだところに登場

ArrayList

  • 可変長
  • 参照型であればどんな型でもOK

ArrayList arr = new ArrayList();
array.add("文字列");
array.add(new String("文字列2"));
array.add(new Integer("13"));

おおおお (T-T)


・・・・・ん?

  • 参照型であれば


・・・参照型?

  • 要するにエイリアス
  • っていうかオブジェクト。intやStringと同じではない
  • 具体的に言うと、 == で比較できない
  • だから取り出して使うときはキャストしてね


うううううう (ToT)
ややこしい・・・かえってエラーになるわー!


結局、「型総称性」というのを使って、ArrayList全体に型の制約を入れる方法が、最近の推奨のようです。。

ArrayList<int> arr = new ArrayList<int>();
array.add(1);
array.add(2);
array.add(3);


迷走しましたが、、実ソース見たときに混乱してた原因の1つがたぶん「ArrayList」。 String[]などと同様に解釈してたので・・・



ArrayListって、そういうことか。


今回の参考URL
http://www.javadrive.jp/start/arraylist/index1.html
http://msugai.fc2web.com/java/reference.html
http://www.atmarkit.co.jp/fjava/rensai2/javaent03/javaent03.html#ap02