String类型的对象,是保存在堆里还是在栈里呢?

在Java的实现中,new出来的String对象一般是放在堆中的。

如果是 String s ="xxx"; 这种,那就是放在常量池中.

JDK6将常量池放在方法区中。

方法区此时也是持久代。

但是从JDK7开始, 常量池的实现  已经从方法区中移出来放到  堆内存里面了。

时间: 2024-10-13 00:15:00

String类型的对象,是保存在堆里还是在栈里呢?的相关文章

js的变量——基本类型保存在栈中,引用类型保存在堆中

javascript的基本类型:Undefined,Null,Boolean,Number,String 引用类型:Object,Array,Function 基本类型值在内存中占据固定大小,被保存在栈内存中,引用类型值是对象,保存在堆内存中. Javascript的内存的生命周期对于用户来说是透明的,不开放的.在定义变量时候就完成了分配内存,使用时候是对内存的读写操作,内存的释放依赖于浏览器的垃圾回收机制. 栈(stack)和堆(heap)==> 1,栈 stack是有结构的,先进后出,存放基

IDEA技巧-快速编写一个String类型的JSON对象

1.先编写一个String类型空值对象 String strJson = ""; 2.将光标放在""中间 3.Alt+Enter调出Inject language or reference视图界面,回车选中Inject language or reference,再选择JSON组件,回车后光标还在字符串中间 4.光标在""中间,再次Alt+Enter,选中Edit JSON Fragment并回车,然后编写JSON对象,JSON对象会自动格式化进

java动手动脑和课后实验型问题String类型

1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请新开辟一个地址空间,存储的地址空间不一样(对象不同),string类型下hello是同一个对象,其内容和地址都相容. 2. public class StringEquals { /** * @param args the command line arguments */ public stati

如何在ArrayList<Integer>中添加String类型数据

黑马入学测试题: ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象. package itheima; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; /** * 在这个泛型为Integer的ArrayList中存放一个St

.Net 类型、对象、线程栈、托管堆运行时的相互关系

JIT(just in time)编译器 接下来的会讲到方法的调用,这里先讲下JIT编译器.以CLR书中的代码为例(手打...).以Main方法为例: static void Main(){ Console.WriteLine("Hello"); Console.WriteLine("XiaoCong"); } 首先CLR会检测到Main方法中引用了一个Console类型,然后CLR会为其分配一个内部结构. 内部结构中每个方法都对应一个记录项,记录项中都容纳一个地址

类型,对象,堆栈和托管堆

C#的类型和对象在应用计算机内存时,大体用到两种内存,一个叫堆栈,另一个叫托管堆,下面我们用直角长方形来代表堆栈,用圆角长方形来代表托管堆. 首先讨论一下方法内部变量的存放. 先举个例子,有如下两个方法,Method_1和Add,分别如下: public void Method_1() { int value1=10; //1 int value2=20;    //2 int value3=Add(value,value); //3 } public int Add(int n1,int n2

String类型传值以及对象传值

package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void main(String[] args) { Stan s=new Stan(); System.out.println(s.mm); change(s); System.out.println(s.mm); } public static void change(Stan s) { s.mm="say&q

java对象转换String类型的三种方法

在很多情况下我们都需要将一个对象转换为String类型.一般来说有三种方法可以实现:Object.toString().(String)Object.String.valueOf(Object).下面对这三种方法一一分析 一.采用Object.toString()toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法.这是采用该种方法时,常派生类会覆盖Object里的t

C++中string类型对象和double型变量之间的互相转换

//convert string type value to double type value string s = "23"; double d; istringstream is(s); is>>d; cout<<d<<endl;   //输出23 //convert double type value to string type value double d=45; string s; ostringstream os; os<<