我是一名即将转向 Java 的 C++ 开发人员。比较这两种语言,我对 java 中的堆使用有一些疑问。
如果我不需要在 C++ 中的函数范围之外保留变量,我会在堆栈上分配它,并让调用堆栈负责清理它。 因此这段代码在 C++ 中是完全合法的,
std::unordered_map<std::string, int> map;
虽然在 Java 中,如果我编写类似的代码,
HashMap<String, Integer> map;
编译器给我一个警告, map 的值未初始化。为了抑制警告,我必须使用,
HashMap<String, Integer> map = new HashMap<>();
我的问题是,更新每个对象是否是 Java 约定,即使我不需要在调用堆栈之外保留它?
最佳答案
Java 根本不使用 C++ 样式代码分配 map
并警告您。你应该program to the interface Map
.你可以用类似的东西来克服这个警告
Map<String, Integer> map = null;
或者,如您的示例,
Map<String, Integer> map = new HashMap<>();
关于java - Java 中的变量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34476035/