「Java堆串」Java 堆 栈

博主:adminadmin 2022-12-23 13:33:08 68

本篇文章给大家谈谈Java堆串,以及Java 堆 栈对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中 关于常量池 栈内存 堆内存

Java中所有局部变量和对象的引用都是存储在栈内存中的,int a = 1;它是局部变量肯定是在栈内存,但是它与常量池没有关系;

常量池是堆内存中的一部分,专门用来存储字符串常量;所以String a="abc"中,引用a是存储在栈内存的,指向常量池中的"abc";

但是如果是String a = new String("abc");就又不一样了,对于通过构造函数得到的"abc"字符串对象,引用a还是在栈内存,但是"abc"不会存到字符串常量池中,而是在常量池之外的其他堆内存中再生成一个"abc",由于这个对象与原先常量池中的"abc"对象是equal关系,它们之间会建立起一种联系;

Java中的字符串常量池与Java中的堆和栈的区别

java常量池不在堆中也不在栈中,是独立的内存空间管理。

 1. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)

 2. 堆:存放所有new出来的对象。

 3. 常量池:存放字符串常量和基本类型常量(public static final)。

对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。

java中如何把一堆定义好的字符串随机赋值给一个变量?

把你的定义好的字符串放在集合(如数组)里,然后得到一个随机数(随机数的范围在根据值的个数确定),然后通过随机数在数组里取值

java超乱,栈和常量池,字符串池,堆都是啥关系啊?乱成一锅粥了

java里的堆栈,常量池,用图形来表示的话会好理解下,不过不会上传图片,就简单的用文字描述下,希望能帮助你理解.

首先,java里new出来的对象都会存放在堆里.栈里可以存放对这些对象的指针的引用.

例如: A a=new A();

这里new出来的A对象会被存放在堆中,而 a呢.会被存放到栈里,并且保存了对A这个对象引用的地址.

栈的存放顺序是后进先出,如果你接触过数据结构的课程的话,这个并不难理解.

至于字符串池,是用来存放一些字符和栈和堆的关系,我们只需要这么理解,当我们创建一个字符串时,java会先在字符串池里寻找有没有你要创建的字符串.

例如: String a="你好";

先寻找字符串池里有没有 "你好" 这个字符串,如果存在,就不会在堆中再创建.

如果不存在,就会在堆中创建 "你好" 这个字符串 并在栈中生成 a保存对其的地址引用 然后还会将新创建的字符串"你好" 保存到字符串池中.

希望对楼主有帮助

关于Java堆串和Java 堆 栈的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。