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];
・・・・・最初に数宣言しなきゃだめですか?
そして、同じ配列にいろんな型の値もっちゃ駄目ですか。そうですか・・・・
これ、コーディングする時どうするんだろう、と悩みながら本をしばらく読み進んだところに登場
- 可変長
- 参照型であればどんな型でも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