#ls2

#contents


*Javaの文字コード [#ja918812]

**Unicodeのバージョン [#o630b513]
http://www.itarchitect.jp/beginners/-/10422.html~
↑のページが詳しく書いてあるが、Unicodeのバージョンに関してはだいぶ古くなっている。~

「Java言語仕様第3版」の「3.1 Unicode」によると~
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.1~

|JDKのバージョン|Unicodeのバージョン|
|JDK 1.1以前|1.1.5|
|JDK 1.1|2.0|
|JDK 1.1.7|2.1|
|J2SE 1.4|3.0|
|J2SE 5.0|4.0|

となっている。


 Javaで採用されているUnicode 2.1では、約4万字程度の文字が割り当てられています※1。
と書いてあるが、Unicode 3.1以降でははるかに多くなっている。~
参照:http://ja.wikipedia.org/wiki/Unicode~


**クラスファイルの文字コードはUTF-8 [#a90b20c4]
Windows上で~
 System.out.println("ABCこんにちは、世界!ABC\n"); 
と書いてShift_JISで保存し、javaでコンパイルする。~
そしてクラスファイルをバイナリエディタで開いてみると次のような部分がある。~
 0000090: 1901 0022 4142 43e3 8193 e382 93e3 81ab  ..."ABC.........
 00000a0: e381 a1e3 81af e380 81e4 b896 e795 8cef  ................
 00000b0: bc81 4142 430a 0700 1a0c 001b 001c 0100  ..ABC...........
""の文字列の部分がUTF-8になっていることがわかる。~


**javaのソースを別のエンコーディングで書くには [#oc9822f5]
システムのデフォルトエンコーディングと異なるエンコーディングで書いたソースをコンパイルするには
 javac -encodng Shift_JIS
のように-encodingオプションを指定する。~
すると""の文字列の部分が、ソースファイルのエンコーディングからシステムのデフォルトエンコーディニグに変換されてクラスファイルになる。~

**Java/Servletでの文字化け(いわゆる全角チルダ問題) [#u4c3b955]
Java/Servlet環境では以下の文字は化ける可能性があるとして有名。~
 -~∥¢£¬
他にもあるかも?~

***その原理 [#i22669a1]
・CP932/Shift_JIS どちらでも「~」= 8160~
~
【Unicode】~
FF5E FULLWIDTH TILDE~
301C WAVE DASH~
~
【CP932 ←→ Unicode】~
8160 ←→ FF5E~
対応なし ← 301C~
~
【Shift_JIS ←→ Unicode】~
8160 ←→ 301C~
対応なし ← FF5E~
~
参考:~
UnicodeコンソーシアムのCP932←→Unicode 対応表~
ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT~
Shift_JIS ←→ Unicode 対応表~
http://ash.jp/code/unitbl21.htm~

■[Java]文字エンコーディング毎の収録文字の違いについて。~
(すなわち文字集合について)~
http://72.14.253.104/search?q=cache:gyRzATk8w3UJ:d.hatena.ne.jp/onozaty/20060718+Enjoy%C3%97Study+%E6%96%87%E5%AD%97%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0&hl=ja&ct=clnk&cd=2&gl=jp~
■[Java]文字エンコーディング毎のUnicodeマッピングの違いについて。~
http://72.14.253.104/search?q=cache:mske067SS_IJ:d.hatena.ne.jp/onozaty/20060719/p2+cp932+shift_jis+%E9%81%95%E3%81%84&hl=ja&ct=clnk&cd=7&gl=jp~



*O/Rマッピング [#s8cd167e]
http://www.thinkit.co.jp/free/article/0606/13/7/~
Hibernate, Torque, iBATIS の比較がよい。~
>第1回  	O/Rマッピングとは?
>第2回 	SQLを直接記述できるiBATIS(前編)
>第3回 	SQLを直接記述できるiBATIS(後編)
>第4回 	SQLを記述しない「Torque」
>第5回 	多機能なHibernate(前編)
>第6回 	多機能なHibernate(後編)
>第7回 	それぞれのメリット/デメリット

*アクセス修飾子 [#fa20f956]
||>|自ファイル|>|>|他ファイル|
|修飾子|自クラス |サブクラス |他クラス| サブクラス| 他クラス|
|public |○| ○| ○| ○| ○|
|protected |○| ○| ○| ○| ×|
|なし| ○| ○ |○ |× |× |
|private |○| ×| ×| ×| ×|
http://www.tohoho-web.com/java/modifier.htm#access


*J2SE 5.0で予約語が増えた[#kc640d74]
 新予約語:enum ~
 JDK 1.3や1.4で作成されたアプリケーションをJDK 5.0でリコンパイルする場合は注意!

参考:~
[[Wikipedia:Javaの予約語>http://ja.wikipedia.org/wiki/%E4%BA%88%E7%B4%84%E8%AA%9E_(Java%E8%A8%80%E8%AA%9E)]]~


*逆引き [#z223e08a]
**数値 [#c5c98b79]
**文字列 [#da6ea280]
***文字の種別(alphabet・ひらがな・カタカナ・漢字)を調べる [#t0412166]
正規表現でUnicodeブロックを使うと文字の種別を調べることができる。~

#pre{{
// 文字列が、漢字だけからなるかどうかを調べるプログラム
import java.io.*;
import java.util.regex.*;

public class Match {

    public static void main(String[] args) {
        String regex = "\\p{InCJKUnifiedIdeographs}+";
        String texts[] = {
            "漢字変換します",
            "漢字変換",
            "あいうえお"
        };

        Pattern p = Pattern.compile(regex);


        for (int i=0; i<texts.length; i++) {
            Matcher m = p.matcher(texts[i]);

            if (m.matches()) {
                System.out.println("Match     :" + texts[i]);
            } else {
                System.out.println("Not match :" + texts[i]);
            }
        }
    }
}
}}
ASCII文字だけであるか判定するには、
 String regex = "\\p{ASCII}+";
と変更すればよい。


参考:~
MODULE.JP - 日本語に絡むUnicodeブロックとスクリプト(正規表現)~
http://module.jp/blog/regex_unicode_prop.html~

**日付 [#nda1ab6a]
**ファイル・ディレクトリ [#a8ec43c1]
**正規表現 [#lff87bdf]
**実行環境・ツール [#lf40249a]
**その他 [#vcc49ec7]
***JDKのバージョンを調べる [#yf691c5b]
 javac -J-version

***JREのバージョンを調べる [#kc640d74]
 java -version

***クラスファイルのバージョンを調べる [#pe999d53]
java のバージョンとクラスファイルのバージョン番号との対応は以下の通り。~
 1.1 = 45.3
 1.2 = 46.0
 1.3 = 47.0
 1.4 = 48.0
 1.5 = 49.0
クラスファイルのバージョンを調べるには、Unix では file コマンドを使うとよい。~
 $ file xxx.class
 xxx.class: compiled Java class data, version 48.0
file コマンドが使えない場合は、class ファイルの先頭 8 バイトを見れば分かる。~
class ファイルの 先頭 4 バイトは「CA FE BA BE」で固定である。続く、5 ~ 6 バイトがマイナーバージョン、7 ~ 8 バイトがメジャーバージョンを表している。~
ある class ファイルの先頭が以下だった場合、~
 CA FE BA BE 00 00 00 30
0x30 = 48 だから、JDK1.4 に準拠してコンパイルされた事が分かる。~


***16進ダンプ [#acf7baf3]
***grep [#qa539ccc]

    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes