今天我们来了解JAVA中的直接常量和按位操作符。
一、直接常量
在编程中,有时需要我们直接告诉编译器生成什么类型的数据,这时候就需要使用直接常量表示。
我们先来看看JAVA中的二进制、八进制、十进制、十六进制如何表示。
二进制:通过toBinaryString()方法,可以将 int、long 类型转换二进制字符串。
八进制:前缀 0 开头,后续通过0~7 的数字表示。
十进制:最常见的类型,0~10 的数字直接表示。
十六进制:前缀 0x(或0X),后面跟随 0~9 的数字 或 小写 a-f(、大写 A-F) 表示。
//十进制
int i1 = 56;
System.out.println("i1==" + Integer.toBinaryString(i1));
//八进制
int i2 = 017;
System.out.println("i2==" + Integer.toBinaryString(i2));
//十六进制
int i3 = 0X2F;
System.out.println("i3==" + Integer.toBinaryString(i3));
此外,我们在使用 long 和 float 类型的时候,通常需要指定具体类型,long 类型的值加L(不推荐使用小写字母 l ,与数字1太过相近,不利于代码的可读性),float 加类型的值加 F或者 f 。
long 类型不加 L 默认时 int 类型,当位数超过指定长度,编译器会报错; float 类型不加 F(或者 f )默认为 double 类型 ,出现小数点,编译器会报错。
//正例
long i1 = 5555;
float f1 = 3;
//反例
long i2 = 5555555555555555L;
float f2 = 6.2F;
为了养成良好的编码习惯,使用 long 和 float 类型时,最好加上具体后缀,告知编译器具体类型。
二、按位操作符
按位操作符用来操作整数基本数据类型中的单个“比特”(bit),即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。
操作符 | 名称 | 用途 |
---|---|---|
& | 与 | 两个输出位均为1,则输出1,否则输出0 |
| | 或 | 两个输出位其中一个为1,则输出1,否则输出0 |
^ | 异或 | 两个输出位结果相同输出0,否则输出1 |
~ | 非 | 只对一个操作数进行操作,若输入位0,则输出1;输入位为1,则输出0 |
- 与操作符( & )示例
int a = 12;
System.out.println("a的二进制==" + Integer.toBinaryString(a));
int b = 14;
System.out.println("b的二进制==" + Integer.toBinaryString(b));
System.out.println(a & b);
System.out.println("结果的二进制=="+Integer.toBinaryString(a & b));
- 或操作符( | )示例
int a = 12;
System.out.println("a的二进制==" + Integer.toBinaryString(a));
int b = 14;
System.out.println("b的二进制==" + Integer.toBinaryString(b));
System.out.println(a | b);
System.out.println("结果的二进制=="+Integer.toBinaryString(a | b));
- 异或操作符( ^ )示例
int a = 12;
System.out.println("a的二进制==" + Integer.toBinaryString(a));
int b = 14;
System.out.println("b的二进制==" + Integer.toBinaryString(b));
System.out.println(a ^ b);
System.out.println("结果的二进制==" + Integer.toBinaryString(a ^ b));
- 非操作符( ~ )示例
int a = 12;
System.out.println("a的二进制==" + Integer.toBinaryString(a));
System.out.println("结果的二进制==" + Integer.toBinaryString(~a));
P.S:这里转换出来的二进制位数变多是因为1100在内存中实际存储位数是为 0000 0000 0000 0000 0000 0000 0000 1100。
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!