忍者ブログ
まにょのITメモ
[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


for(int i=0; i<10; i++) {
  処理
}

for文といえば、上記のような形をテンプレとして思い浮かべがちだが・・・

for( ①; ②; ③ ) {
}

for文の( )の中身、セミコロンの間はそれぞれ
①初期化
②条件
③追加処理
を書く場所となっている。

ので、

条件何もなし、ひたすらループさせたい時は、
for( ; ; ) {
}
と、セミコロンの間に何も書かないこともできるし、

変数を2つ使いたい!という時は、
for(int i=0, k=10; i<5; i++, k--) {
}
という風に変数を複数宣言することもできる。

for(String str="aaa"; ; ) {
}
intじゃなくて、Stringを書くこともできる。


★できないこと
for(int i=0, String str="a"; ; ){
}
型の違う2つ以上の変数を初期化すること。

for( ; i<10, n>5; ) {
}
2つの変数を使って条件にすること。
PR

char c = '\u3042';

charは、1文字しか持てないので、本当なら'\u3042'という6文字は持てないはず。
この\uがポイント。
\uを書くと、このシングルコーテーションの中身は文字コードですよ、という宣言になる。
charは、1文字しか持てないが、その文字を文字コードで表す場合のみ、2文字以上持てる。
(文字コードで表せる1文字。結局文字としては1文字しか持てない。)

int cc = 0x3042;

数字3042の前に、0xをつけることで16進数で表記しているという意味になる。
変数ccには、16進数の3042が入っている。

System.out.println(cc);
とすると、10進数に戻るため

12354

となる。

System.out.println((char)cc);
とすると、charは文字コードも持つので、文字コードの3042はひらがなの"あ"のため



となる。

String str = "abc.d.ef.ghi";
String[] val = str.split(".");

と書くと、valの中身は何も入っていない。
split()の引数に "." は使えない?


split()の変数に書くのは正規表現なので
String[] val = str.split("//.");
と書くと、正しく動く。

★リフレクションでフィールドを取得するには

Field[] fields = clazz.getFields();
publicのフィールドのみ取得できる。

Field[] fields = clazz.getDeclaredFields();
privateのフィールドも取得できる。


★フィールド名を取得するには

String fieldName = field.getName();


★フィールドの型を文字列で取得するには

String fieldType = field.getType().getName();
java.lang.String という感じで返ってくる。
忍者ブログ * [PR]