Alb*_*gni 27 java double declaration
这些陈述在哪些方面有所不同?
Jon*_*eet 23
尝试了一个简单的程序(同时使用0和100,以显示"特殊"常量和常规常量之间的差异),Sun Java 6编译器将为1和2输出相同的字节码(情况3和4与2相同)就编译器而言).
例如:
double x = 100;
double y = 100.0;
Run Code Online (Sandbox Code Playgroud)
编译为:
0: ldc2_w #2; //double 100.0d
3: dstore_1
4: ldc2_w #2; //double 100.0d
7: dstore_3
Run Code Online (Sandbox Code Playgroud)
但是,我在Java语言规范中看不到任何保证这种常量表达式的编译时扩展的东西.对于以下情况,编译时缩小范围:
byte b = 100;
Run Code Online (Sandbox Code Playgroud)
如第5.2节所述,但这并不完全相同.
也许眼睛比我更敏锐的人可以在某处找到保证......
Jes*_*per 14
对于第一个:
double dummy = 0;
Run Code Online (Sandbox Code Playgroud)
整数文字0
转换为带有扩展基元转换的double,请参阅5.1.2扩展Java语言规范中的原始转换.请注意,这完全由编译器完成,它对生成的字节码没有任何影响.
对于其他人:
double dummy = 0.0;
double dummy = 0.0d;
double dummy = 0.0D;
Run Code Online (Sandbox Code Playgroud)
这三个是完全一样的- 0.0
,0.0d
并且0.0D
只有三个不同的书写方式double
文字.请参阅JLS中的3.10.2浮点文字.
归档时间: |
|
查看次数: |
75595 次 |
最近记录: |