如果计算机是32位 *** 作系统,则 long 是 4 byte。
如果是64位 *** 作系统,则 long 是 8 byte。
长整型数值有一个后缀 L 或 l ( 如:4000000000L) 。
十六进制数值有一个前缀 Ox 或 0X (如:OxCAFEL)。
八进制有一个前缀 0(如:010 对应八进制中的 8)。
很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。
在 Java 中,整型的范围与运行 Java 代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同 *** 作系统之间进行移植给程序员带来的诸多问题。
与此相反,C 和 C++ 程序需要针对不同的处理器选择最为高效的整型,这样就有可能造成一个在 32 位处理器上运行很好的 C 程序在16位系统上运行却发生整数溢出。由于 Java 程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。
从 Java 7 开始,还可以为数字字面量加下划线,如用 1_000_000(或者0b1111_0100_0010_0100_0000 ) 表示一百万。这些下划线只是为了让人更易读。Java 编译器会去除这些下划线。
Java 没有任何无符号(unsigned) 形式的 int、long、short 或 byte 类型。
C和C++中,在有符号整型前目加上:unsigned 表示无符号。例如:
在unsigned short中:1000000000000001
有符号:-1 无符号:32769
C++获取方法:
cout<Java获取方法:
System.out.println(Short.SIZE/8);
C++:
cout<Java:
System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE);
C++:
int value = INT_MAX+1; //01111111+1=1000000=0,系统显示 INT_MIN数值。 int value = INT_MAX+2; //01111111+2=11111111=-1,系统显示 INT_MIN+1数值。 unsigned int value=UINT_MAX+1; //11111111+1=100000000=0,系统显示0。 unsigned int value=UINT_MAX+2; //11111111+2=100000001=1,系统显示1。
Java:
System.out.println(Integer.MAX_VALUE);//输出为:2147483647 System.out.println(Integer.MAX_VALUE+1);//输出为:-2147483648 System.out.println(Integer.MAX_VALUE+2);//输出为:-2147483647 System.out.println(Integer.MIN_VALUE-1);//输出为:2147483647 System.out.println(Integer.MIN_VALUE);//输出为:-2147483648 System.out.println(Integer.MIN_VALUE-2);//输出为:2147483646
出现以上的原因是ASCII负数补码的机制不一样。
long double:16 byte
float 类型的数值有一个后缀 F 或 f (例如,3.14F。) 没有后缀 F 的浮点数值(如 3.14 ) 默 认为 double 类型。当然,也可以在浮点数值后面添加后缀 D 或 d (例如,3.14D)。
1)尾数 2)E/e 3)指数
例如:
double value3=123450000000000;
double value4=1.2345E14;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)