データタイプに関する(基本)
まず、一つ会社の面接受けるときよくある問題、銀行業務中には、float型使えますか?
// float型の変数に値を代入したい場合は必ず最後に「f」をつける
float f = 0.1f;
double d = 1.0/10;
System.out.println(f);
System.out.println(d);
System.out.println(f==d);// なぜfalse?
float f1 = 1354684643535f;
float f2 = f1 + 1;
System.out.println(f1);
System.out.println(f2);
System.out.println(f1==f2);// ここまたなぜtrue?
問題の答えは、float型は銀行業務に使わないほうがいいです。
結論:
- float型は上限、まるめの誤差がある
- float型の変数で比較は完全にしないでください
- 銀行業務には、BigDecimal変数型で計算、比較なです。
次は、キャラクター型、「文字」
char c1 = 'a';
char c2 = '本';
System.out.println(c1);
System.out.println((int)c1); // 強制転換、char型からint型に転換する
System.out.println(c2);
System.out.println((int)c2);
結果:
a
97
本
26412
// すべての「キャラクター」「文字」の本質は数字
次は、エスケープ文字
// エスケープ文字
// \t 空白
// \n 改行
System.out.println("hello\tworld");
System.out.println("hello\nworld");
結果:
hello world
hello
world
最後は
// 文字列
String sa = new String("hello world");
String sb = new String("hello world");
// saとsbの比較結果はfalseですか?なぜ
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
// scとsdの比較結果はtrueですか?なぜ
結果:
false
true
一番目は 完全に二つ違うオブジェクトの比較です。
newを使ったら、新しいオブジェクト作ることができます。
saとsbのメモリアドレスが違いますためfalseになった。
変数の比較は内容を比較、同じ内容のため、scとsdはtrueです