String str=“i“与 String str=new String(“i”)一样吗?面试篇(第八天)

简介: String str=“i“与 String str=new String(“i”)一样吗?本文带大家回答这个问题。

初级回答



不一样,String str = “i”;是把值放到了常量中,而String str = new String(“i”);是将值放到了堆内存中。


高级回答



String是final修饰的,所以是将值放到了常量中,而new String()是放到了堆内存中。

String str = “i”;的内存模型是这样的。如图。栈内存通过地址直接找到常量池中的数据。


40.png


String str = new String(“i”);的内存模型是这样的。如图。栈内存首先通过地址去堆内存中寻找,堆内存再通过地址去常量池中寻找。


41.png



相关文章
|
8月前
|
Java
每日一道面试题之String常用的方法有哪些?
每日一道面试题之String常用的方法有哪些?
|
18天前
|
安全 Java 调度
Java基础面试,String,StringBuffer,StringBuilder区别以及使用场景
* String是final修饰的,不可变,每次操作都会产生新的对象。 * StringBuffer和StringBuilder都是在原对象上进行操作 * StringBuffer是线程安全的,StringBuilder是线程不安全的。 * StringBuffer方法是被synchronized修饰的
|
13天前
|
编译器 程序员 C语言
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题(下)
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题
8 0
|
13天前
|
编译器 C语言 C++
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题(中)
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题
26 0
|
13天前
|
存储 程序员 编译器
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题(上)
从C语言到C++⑨(第三章_C&C++内存管理)详解new和delete+面试题笔试题
21 0
|
18天前
|
存储 Java 对象存储
String str="Hello" 与 String str=new String(“Hello”)一样吗?
String str="Hello" 与 String str=new String(“Hello”)一样吗?
|
8月前
|
Java
每天一道面试题之String属于基础数据类型吗?
每天一道面试题之String属于基础数据类型吗?
|
18天前
|
存储 NoSQL Java
面试题:redis除了使用string、set还了解哪些类型
面试题:redis除了使用string、set还了解哪些类型
17 0
|
18天前
|
安全 Java
【面试小知识】String、StringBuilder、StringBuffer
【面试小知识】String、StringBuilder、StringBuffer
|
18天前
|
Java
Java面试题_String 相加
Java面试题_String 相加
18 0