对象问题.是否使用构造函数?

Ton*_*ony 2 java string object map

我是Java的新手,我对使用构造函数有一些疑问:

Map<String, Object> map = new HashMap<String, Object>();
        map.put("one", new String("Hello"));//1
        map.put("two", "world");//2
Run Code Online (Sandbox Code Playgroud)

哪个陈述更加糟糕?有什么区别?哪一个是最好的?

Ósc*_*pez 8

两种形式都是一样的,但引擎盖下有所不同.如果使用String构造函数,则跳过内部字符串池,始终创建一个新对象 - 而使用字符串文字首先查找池中的字符串,如果在那里找到它,则重用它(仅创建一个新字符串,如果它之前不在池中 - 因此它更有效,因为它避免了不必要的对象实例化.顺便说一下,字符串可以从池中共享,因为它们是不可变的.

许多静态代码分析工具将String构造函数用法标记为违反良好的编程习惯,并且通常应该避免使用它们.