3.9直接常量
直接常量是的编译器准确的知道要生成什么样的类型,但是有的时候确实模棱两可。发生这种情况,一般情况下我们需要对编译器加以适当的“指导”。
我们可以在常量后边加一些后缀字符标志它的类型。
若为大写(或小写)的L,代表Long(但是,是用小写字幕l容易造成混淆,因为它看起来很像数字1)。大写(或小写)字母F,代表float,大写(或小写)字母D,代表double。
十六进制则是用前缀0x或(0X),后边跟随0-9或小写(或大写)的a-f来代表。
八进制则是以0位前缀,后边跟随0-7的数字。
名称 | 前缀 | 后缀 | 字符 |
---|---|---|---|
Long | L/l | 0-9 | |
Double | D/d | 0-9 | |
Float | F/f | 0-9 | |
十六进制 | 0x/0X | 0-9,a-f/A-F | |
八进制 | 0 | 0-7 |
3.9.1 指数记数法
Java采用了一种很不直观的记数法来表示指数。
1 | float expFloat = 1.39e-43f; |
我们知道在科学与工程领域,“e”代表自然对数的技基数,约等于2.718(Java中的Math.E给出了更精确的double值)。
这种用法正是C、C++以及Java中都存在的。
在Java中看到1.39e-43,表示的是1.39*10(-43).
3.10 按位操作符
按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。
对应的规则是:
名称 | 操作 |
---|---|
与(&) | 如果两个输入位都是1,则输出1否则输出0 |
或(丨) | 如果两个输入位有一个是1,则输出1否则输出0 |
异或(^) | 如果两个输入位某一个是1,但不全是1,则输出1 |
非(~) | 也成取反操作,属于一元操作符 |
例子:
1 | /** |
Output:
1010&1110=1010
1010|1110=1110
1010^1110=100
~1010=11111111111111111111111111110101
按位操作符也可与等号(=)联合使用,&=、|=、^=都是合法的,而~是一元操作符,不呢个和=连用。
我们将布尔类型作为一种单比特值对待,所以我们可以使用按位“与”、按位“或”、按位“异或”。但不能使用按位“非”。
对于布尔值,它们与逻辑操作符的结果相同,但是他们不会中途“短路”。
虽然存在按位“异或”,但是我们并不能用它来进行“逻辑”操作。
例子:
1 | /** |
Output
t1运行了
t2运行了
结果:false
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
t2运行了
t4运行了
结果:true
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
t2运行了
t4运行了
结果:true
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
t3运行了
t4运行了
结果:true
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@