Java SE 7では、バイナリ形式の文字通り表現が追加されました。バイナリリテラルを簡単に使用して、小数点以下のような数値を表すことができます。
例えば:
// An 8-bit byte value: byte aByte = 0b100001;// A 16-bit short value: short aShort = 0b10100101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101;// A 64ビットの長い値(最後の接尾辞「L」に注意してください)= 0b10ly; //バイナリリテラル値は0bまたは0bで始まり、ケース非感受性int2 = 0b101です。
Java SE 7では、区切り文字としてのアンダースコアの数値表現もサポートされています。
// Decimal form int anint1 = 123_45_6; //バイナリ、hexadecimalなどもサポートint2 = 0b10_0110_100; int anint3 = 0xff_ec_de_5e; // decimal formはfloat pi = 3.14_15fもサポートしています。 double adouble = 3.14_15; //複数のアンダースコアが接続されています。
ただし、次の執筆フォームは正しくありません。
//アンダースコアは最後に配置できませんint x = 52_; //エラー//アンダースコアは小数点に隣接することはできません(小数点の前または後のいずれも小数点に隣接していない)フロートPI1 = 3_.1415F; //エラーフロートPI2 = 3._1415F; //エラー//アンダースコアは、接尾辞「L」または「F」フロートPI3 = 3.1415_Fの前面に配置できません。 //長いエラー1 = 999_9999_L; //エラー//枢機Int x5 = 0_x52を表すプレフィックス文字の間にアンダースコアを配置することはできません。 //エラー
さらに、アンダースコアが正面に配置されている次の状況にも注意を払う必要があります。
int _52 = 120; // javaでは、変数名は数字から始めることはできませんが、アンダースコアint x = _52から始めることができます。 //したがって、_52は文字通りの数字ではなく、変数識別子(変数名)です。