当前位置: 首页 > 面试题库 >

Java双重初始化

闻人献
2023-03-14
问题内容

这些陈述有何不同?

  1. 双虚拟= 0;
  2. 双虚拟= 0.0;
  3. 双虚拟= 0.0d;
  4. 双虚拟= 0.0D;

问题答案:

尝试过一个简单的程序(使用0和100来显示“特殊”常数和通用常数之间的差异)之后,Sun Java
6编译器将为1和2输出相同的字节码(情况3和4与2相同)就编译器而言)。

因此,例如:

double x = 100;
double y = 100.0;

编译为:

0:  ldc2_w  #2; //double 100.0d
3:  dstore_1
4:  ldc2_w  #2; //double 100.0d
7:  dstore_3

但是,我在Java语言规范中看不到任何能 保证 常量表达式的编译时扩展的东西。对于以下情况,存在编译时范围 缩小 的问题:

byte b = 100;

如5.2节所述,但这不是完全一样的。

也许有比我更眼神敏锐的人可以在某处找到保证…



 类似资料:
  • 问题内容: 在Java的“ 隐藏功能”中,最常见的答案是,其语法非常诱人: 此成语创建一个匿名内部类,其中仅包含一个实例初始化程序,该实例“可以使用包含范围内的任何方法”。 主要问题:这听起来像效率低下吗?它的使用是否应仅限于一次性初始化?(当然还有炫耀!) 第二个问题:新的HashSet必须是实例初始化程序中使用的“ this”……任何人都可以阐明该机制吗? 第三个问题:这个习惯用法是否太晦涩,

  • 我正在将一个Spring3 webapp迁移到一个Spring4 Spring Boot webapp。

  • Java中的双大括号初始化语法()是什么?

  • 背景-我正在将一些遗留代码重构到spring web-mvc框架中。 我使用的是Spring5.0.5.Release和tomcat 8.5.31。 我将通过eclipse Oxygen.3a发行版(4.7.3a)和Fedora28启动该应用程序。 问题-当启动tomcat时,应用程序调度程序间歇性地(大约75%的时间)重新启动。似乎在应用程序加载之后,我得到一个完成的消息,然后重新加载。 在完成

  • 如果我写 而不是 或者与之相反 第一个在任何方面都不安全吗?