Javaの変数
- 変数宣言:変数の名前をJavaに通知、値を格納する領域をメモリ上に確保
int data (=初期値)
- 複数変数をまとめて宣言可能
int data1, date2 (=初期値)
- 初期値を設定するようにしよう
int data1= 108;
String message = “Hello World”;
- 識別子
- Java内部ではUCS2を使っている。
- 全部のUnicode文字を利用できる
- 大文字小文字は区別(CaseSensitive)
- 変数名は基本的にReadableに、英語として読めるのが理想
if (obj.isCompleted()){
- 慣例的には変数はcamelClass,クラスはPascal,定数は大文字+アンダースコア記法
定数
- 再代入できない変数のこと
//よくない例
int price = 1000;
double sum = price * 1.08;
- 定数を使うことで計算式の意味がわかりやすく、変更作業がしやすくなる
- コードの中に文字列直打ちは避けたい→定数として外にだす
//リファクタ例
final double TAX = 1.08;
int price = 1000;
double sum = price * TAX;
System.out.println(sum);
Javaのデータ型
- 静的型付け言語:変数を宣言する際に型も決定する
- 基本型:値そのものが格納
- 参照型:値の格納場所を表す情報を格納。Javaの基本は参照型
- 全てに対して対応する基本型、参照型がある
- boolean:基本型 Boolean:参照型
- int:基本型 Integer:参照型
整数型:基本intを使う
- byte, char:バイトデータを格納する
- short:小さな整数を表す
- long:intで対応できない数値範囲を扱う場合のみ
浮動小数点型:基本doubleを使う
- メモリを64bit占有
- 浮動小数点型は絶対地位が大きくなるに従って値の飛び幅も大きくなる
- IEEE 754で値の保持形式を定めている
正規化し、仮数、指数の形式に分解して管理
$123.75_{(10)}=1111011.11_{(2)}=1.11101111*2^{6}_{(2)}$$1.23*10^1$ ~ $1.24*10^1$ と $1.23*10^{100}$ ~ $1.24*10^{100}$ で間隔の差がでる!!
文字型
- Char 型:16bit - Unicode(UCS2) 1文字
- String 型:可変長、2の倍数
真偽値(boolean、論理型)
- 数値型と相互変換できない(true=1,false=0など)
型推論
var 変数名 = 初期値
var i = 48;
- データ型を省略できる
- 代入された値からコンパイラーが自動的に肩を推論し決定=型推論する
- 上の例ならintを推論してくれる
- 初期値は省略できない
Cannot use var on variable without initializer
- 複数宣言できない
- フィールド宣言では使えない、ローカル変数(メソッド内で宣言する変数)のみ
リテラルとは
- データ型に格納できる値そのもの、表現方法のこと
- データ型に応じ、整数リテラル、浮動小数点リテラル、真偽リテラルなど
整数リテラル
- 10進数/16進数/8進数/2進数リテラル
浮動小数点リテラル
- $<仮数部>E<符号><指数部>$
- 1.14142e-5 → 0.0000114142
型サフィックス
- 数値リテラルはしていないと整数はint、浮動小数点はdouble
- データ型が勝手に決められると困る場合に使用
- 数値リテラルに肩を表す接尾辞をつける
System.out.println(2147483648L); //longの範囲に入っている
数値セパレーター(区切り文字)
- 桁数大きい文字の可読性を上げるため
var pi = 3.141_592_653_59;
- 数値文字列を受け取るメソッド(Integer.parseIntなど)ではセパレータを認識できないので注意
文字リテラル
- シングルクオートで表す
- unicode文字は`\u3042`形式で16進数文字コードでかける
文字列リテラル
- ダブルクオートで表す
- 中にダブルクオートを入れたいときはエスケープシーケンスを使う
System.out.println("You are \"GREATE\" !");
System.out.println("Welcome to wherever you are \nThis is your life, you made it this far");
var str = "Welcome, you got to believe " + "That right here, right now"; //可読性改善の目的で分離
System.out.println(str);
型変換
静的型付けであるが型変換が許される
-
拡大変換
- intからlong
- 整数から浮動小数点への変換すると型落ちが発生することがあるので注意
-
縮小変換(キャスト、明示的な変換)
- 明示的に変換の意思を示す
- int とshort の変換で符号が変わってしまうこともあるので注意
int i = 10;
// byte b = i ; //NG
byte b = (byte)i ; //OK