|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 回忆一遥远 于 2017-8-16 07:37 编辑
指数计数法
例:
- public class Exponents {
- public static void main(String[] args){
- // 小写的 e 和大写的 E 都可以
- float expFloat = 1.39e-43f;
- expFloat = 1.39E-43f;
- System.out.println(expFloat);
- double expDouble = 47e47d;
- double expDouble2 = 47e47;
- System.out.println(expDouble);
- }
- }
复制代码
输出:
“e”代表自然对数的基数,约等于 2.718 (在 Math.E 给出了更精确的 double 型的值)。
然而,在设计 FORTRAN 语言的时候,设计师们把 e 代表“10的幂次”。这种惯例在 C、C++ 以及 Java 中被保留了下来。
如果编译器能够正确地识别类型,就不必在数值后附加字符。
例如:
对于
编译器通常会把指数作为 double 处理,所以如果尾部没有 f ,编译器就会提示使用类型转换将 double 转换成 float。
按位操作符
按位操作符用来操作整数基本数据类型中地单个“比特”(bit),即二进制位。
按位操作符会对两个参数中对应地位执行布尔代数运算,并生成一个结果。
按位操作符来源于 C 语言面向底层地操作,这种操作经常需要设置硬件寄存器中的二进制位。Java 的设计初衷是嵌入式机顶盒内,所以这种面向底层的操作仍被保留下来。但是并不常用。
操作符有:
“与”操作符 (&)
“或”操作符(|)
“异或”操作符(^)
“非”操作符(~)
&=、|=、^= 都是合法的, “~”不能与“=”联用。
移位操作符
移位操作符的运算对象也是二进制的“位”。移位操作符只能处理整形(整数类型)
左移操作符(<<) : 按照操作符右侧指定的位数将操作符左边的操作数向左移动,低位补0。
“有符号”左移操作符(>>) : 按照操作符右侧指定的位数将操作符左边的操作数向右移动,高位使用符号扩展(若符号为正,高位插0;若为负,插1)。
“无符号”左移操作符(>>>):它使用“0扩展”,无论正负,高位都插0。
对 char、byte、short 类型的数值进行移位处理时,在移位之前会被转化成 int 类型,并且结果也是一个 int 类型的值。
“移位”可以和“等号”组合使用(<<=、>>=、>>>=)
截断:
- public class URShift {
- public static void main(String[] args){
- int i = -1;
- System.out.println(Integer.toBinaryString(i));
- i >>>= 10;
- System.out.println(Integer.toBinaryString(i));
- long l = -1;
- System.out.println(Long.toBinaryString(l));
- l >>>= 10;
- System.out.println(Long.toBinaryString(l));
- short s = -1;
- System.out.println(Integer.toBinaryString(s));
- s >>>= 10;
- System.out.println(Integer.toBinaryString(s));
- byte b = -1;
- System.out.println(Integer.toBinaryString(b));
- b >>>= 10;
- System.out.println(Integer.toBinaryString(b));
- b = -1;
- System.out.println(Integer.toBinaryString(b));
- System.out.println(Integer.toBinaryString(b>>>10));
- }
- }
复制代码
结果:
- 11111111111111111111111111111111
- 1111111111111111111111
- 1111111111111111111111111111111111111111111111111111111111111111
- 111111111111111111111111111111111111111111111111111111
- 11111111111111111111111111111111
- 11111111111111111111111111111111
- 11111111111111111111111111111111
- 11111111111111111111111111111111
- 11111111111111111111111111111111
- 1111111111111111111111
复制代码
字符串操作符 + / +=
例子:
- public class StringOperators {
- public static void main(String[] args){
- int x = 0, y = 1, z = 2;
- String s = "x, y, z ";
- System.out.println(s + x + y + z);
- System.out.println(x + " " + s);
- s += "(summed) =";
- System.out.println(s + (x + y + z));
- System.out.println("" + x);
- }
- }
复制代码
结果:
- x, y, z 012
- 0 x, y, z
- x, y, z (summed) =3
- 0
复制代码
类型转换操作符
强制执行类型转换时,把要得到的数据类型放在圆括号中,放在要进行类型转换的值的左边。
比如
截尾和舍入
如果把一个浮点数转换成整型,Java 时如何处理的?
比如把19.9转换成int,结果时30还是20?
实例:
- public class CastinNumbers {
- public static void main(String[] args){
- double above = 0.7, below = 0.4;
- float fabove = 0.7f, fbelow = 0.4f;
- System.out.println("(int)above: " + (int)above);
- System.out.println("(int)below: " + (int)below);
- System.out.println("(int)fabove: " + (int)fabove);
- System.out.println("(int)fbelow: " + (int)fbelow);
- }
- }
复制代码
输出:
- (int)above: 0
- (int)below: 0
- (int)fabove: 0
- (int)fbelow: 0
复制代码
由上面的实例可知, Java 时截尾处理的。
若要舍入的结果,需要使用 java.lang.Math 中的 round() 用法:
round() 是 java.lang 的一部分,不需要额外导入。
Java 中取消了 sizeof
|
评分
-
查看全部评分
|