2.21文字列参加演算
2116 ワード
/*
+, 。
+ , 。
*/
class DataTypeDemo9 {
public static void main(String[] args) {
System.out.println("hello" + 'a' + 1); // helloa1
System.out.println('a' + 1 + "hello"); // 98hello
System.out.println("5+5=" + 5 + 5); // 5+5=55
System.out.println(5 + 5 + "=5+5"); // 10=5+5
}
}
補足:
1:LongまたはFloatタイプ変数を定義する場合は、Lまたはfを加算します.
整数のデフォルトはintタイプで、浮動小数点数のデフォルトはdoubleです.
byte,shortは定義するとき,実際にintタイプの値を受信する.
これは自分でデータ検出をしたので、それらの範囲内でなければ、エラーを報告します.
2:byte値の問題
byte b1 = 127;
byte b2 = (byte)128;//-128
byte b3 = (byte)129;//-127
byte b4 = (byte)130;//-126
byteの範囲:-128~127
128:10000000
-128:1000000(ここでの1はシンボルビットであり、数値ビットでもある)
3:データ型変換のデフォルト変換
byte,short,char -- int -- long -- float -- double
long:8バイト
float:4バイト
A:最下位のストレージ構造が異なります.
B:floatが表すデータ範囲はlongの範囲より大きい
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
4:Java言語の文字charは中国語の漢字を保存できますか?どうしてですか.
いいですよ.Java言語の文字は2バイトを占めているからです.
Java言語はUnicode符号化を採用している.
floatデータのメモリへの格納方法
floatタイプの数字は、コンピュータに4バイトで格納されます.IEEE-754フォーマットの標準に従う:
1つの浮動小数点数は2つの部分から構成されている:底数mと指数e
この浮動小数点数の実際の値を表すには、下の部分にバイナリ数を使用します.
指数部は8 bitのバイナリ数を占有し、数値範囲が0-255であることを表すことができる.
しかし、指数はプラスでもマイナスでもよいので、IEEEは、ここで算出した次の方が127を減らさなければ本当の指数ではないと規定している.
したがって、floatタイプの指数は-126から128まで可能である.
ベース部分は実際には24 bitの値を占有するが、最上位は常に1であるため、最上位ビットは記憶を省く、記憶中は23 bitを占める.
科学計数法
書式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
Sは浮動小数点数の正負を表す
E指数に127を加えた値バイナリデータ
Mベース
例:
17.625メモリ内のストレージ
まず17.625をバイナリに換算する:10001.101
整数部分は、商が0になるまで2で割って、残数が反転します.
小数部は、0に乗算するまで2を乗じ、進位順に取ります.
10001.101を右に移動し、小数点まで1桁しか残っていません.
1.0001101*10^4右に4桁移動したため
この時、私たちの底数と指数が出てきました.
底数:小数点前は必ず1なので、IEEEでは小数点以下のものだけを記録するようになっています.したがって、ここでのベース数は0001101です.
指数:実際には4で、127(転出時、127を減算)を付けなければならないので131です.つまり10000011
シンボル部分は整数なので0です
以上のように、メモリにおける17.625の記憶フォーマットは、以下のとおりである.
01000001 10001101 00000000 00000000