String str="i"与 String str=new String(“i”)一样吗?
String str = "i";从常量池获取或创建对象,而 String str = new String("i");总在堆中创建对象;2. 先前有效节省内存,今晚可能重复创建浪费资源;3. 先前相同值引用一致,同期不一致;4.

String str = "i";和 String str = new String("i");不一样,主要区别在于对象的创建和内存分配方式。 壁纸样机神器
壁纸样机生成 0 查看详情 1.字符串常量池免费 vs 堆内存当使用 String str = "i";时,JVM会检查字符串常量池中是否已经内容为 "i" 的字符串。如果存在,就直接返回该引用;如果不存在,就在常量池中创建一个新对象,并让 str 指向它。这种方式不会在堆中额外创建对象。而使用 String str = new String("i"); 存在时,无论常量池中有没有 "i",都会在堆中创建一个新的 String 对象。同时,如果常量池中没有“i”,将会在常量池中创建一个。2. 内存占用与性能new String("i") 的方式效率较低,因为可能导致重复创建相同内容的对象,浪费内存。例如:String a = quot;iquot;; —— 只涉及常量池 String b = new String(quot;iquot;); —— 在堆中新建对象,可能同时常量池中推荐优先使用 String str = "i";,更高效且符合Java的字符串优化机制。 3. 引用比较结果不同由于创建方式不同,两者在==比较时表现不一样:String a = quot;iquot;; String b = quot;iquot;; a == b; // true,指向常池量同一个对象 String c = new String(quot;iquot;); String d = new String(quot;iquot;); c == d; // false,堆中两个不同的对象 4. 使用除非明确需要一个全新的、独立的字符串对象(比如防止后续修改影响建议),否则应使用 String str = "i";。这是标准写法,也有利于 JVM 优化。基本上就这些,不复杂但很容易忽略。
以上就是String str="i"与String str=new String(“i”)一样吗?的详细内容,更多请关注乐哥常识网其他相关文章! 相关标签:java 区别 内存占用 字符串常量 Java jvm String 常量 字符串常量 字符串堆对象 大家都在看:final 在java中有什么作用? JAVA 中的Math.round(-1.5)等于多少? java java中操作字符串都有哪些类?它们之间有什么区别?java中10流分成几种?什么是Java中的构造函数,它的作用和特点是什么?
