马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|