トップJava > Javaの基本

Javaの基本

Javaの基本データ型

Java には符号なし(unsigned)整数型が存在しない。byteも符号付きである。C# の場合、byteは符号なしである。 C# の符号付 8ビット整数は sbyte である。

データ型	値
boolean	true or false
char	16ビットUnicode文字 \u0000~\uFFFF
byte	8ビット整数 -128~127
short	16ビット整数 -32,768~32,767
int	32ビット整数 -2,147,483,648~2,147,483,647
long	64ビット整数 -9,223,372,036,854,775,808~9,223,372,036,854,775,807
float	32ビット単精度浮動小数点数
double	64ビット倍精度浮動小数点数

float型をint型として読み込んだ場合、Float.intBitsToFloat(intval) で float型の値に変えることができる。 cast ではない。C# では、次のようにすればいいようだ。

byte[] bytes = BitConverter.GetBytes(intval);
float f = BitConverter.ToSingle(bytes, 0);

エンディアン

Java は基本的にはビッグエンディアンである。一方、C# の場合、 リトルエンディアンである。

C/C++の場合、エンディアンはプロセッサに依存する[6]。

ソースと class のディレクトリを別にする

デフォルトではソース(*.java) と classファイルが同じディレクトリ下に置かれる。

ソースファイルを c:/map/src ディレクトリ下に置き、 class ファイルは c:/map ディレクトリ下に置きたいとき、実行を c:/map で行う場合には 次のようにする。

c:\map>javac -d ./ src/map.java

class ファイルを c:/map/out に置きたい場合には次のようにする。

c:\map>javac -d ./out src/map.java

ディレクトリの指定はこの場合下のようにしてもよい。

c:\map>javac -d out src/map.java

Javaの実行時のパラメータについて

classが別ディレクトリにあるときの実行方法

hello.class が現ディレクトリにある時は java hello でよいが、 別ディレクトリにあるときはオプション -classpath <directory> を使う[3]。

次の例では ./OSMParser ディレクトリ下に MyParser.class がある。 この場合、「./OSMParser」は単に「OSMParser」でもよい。

java -Xmx5G -classpath ./OSMParser MyParser japan

メモリ使用量の最大値の設定

メモリ使用量の最大値は次のようにして確認できる[2]。

 System.out.println(Runtime.getRuntime().maxMemory());

使用中の Windowsノートパソコンでは 2122317824 (2GB)となった。

メモリ使用量の最大値を 5,000MB に指定するには次のようにする。

 java -Xmx5000m OSMParser kanto
 java -Xmx5G OSMParser kanto
このときの System.out.println(Runtime.getRuntime().maxMemory()); は 5242880000 となった。

デフォルトのエンコーディング

Java のデフォルトのエンコーディングは次のようにして確認できる[1]。

 System.out.println(System.getProperty("file.encoding"));

Windows環境では MS932 となる。Shift-JISコードである。

日本語ファイルの読み込み

デフォルトの文字コードと異なる文字コードのファイルをコンパイル、実行するときには 注意がいる。

例えば、Windows環境で UTF-8コードのファイルをコンパイルおよび実行するには、 次のようにコードを指定する。

javac -encoding UTF-8 OSMParser.java
java -Dfile.encoding=UTF-8 -Xmx5000m OSMParser kanto

リファレンス

[1] デフォルトエンコーディングを確認する
[2] Javaのヒープサイズとは?メモリの確認・設定方法を把握しよう
[3] javaのクラス実行を別ディレクトリからする時のオプション
[4] javac - Java プログラミング言語コンパイラ
[5] Java コンパイル時のソースパスとクラスファイル出力先を指定する
[6] リトル・エンディアンとビッグ・エンディアン
[7] 基本のデータ型
[8] intBitsToFloat method in Java VS C#?