java中 堆栈的区别【面试题详解】

今天爱分享给大家带来java中 堆栈的区别【面试题详解】,希望能够帮助到大家。

栈Stack

存储局部变量
是存放方法的局部变量的内存空间,每个方法都会分配一块空间
栈内存中的值可以共享
对于引用类型,Stack里面保存的是指向对象的内存地址(引用)
程序在栈内存中运行
堆Heap

存储new出来的数组或对象
在JVM内存中,所有线程共享堆内存,而每个线程都有自己的栈。

//对象会被分配到堆内存中
String str1 = new String("abc");
//变量会被分配到栈内存中
//在栈中创建对象的引用str2,然后查找栈中有没有存放“abc”,
//如果没有,则将“abc”存放进栈,并将str2指向“abc”,如果已经有“abc”, 则直接将str2指向“abc”。
String str2 = "abc";

String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);

String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4);


上面代码输出的结果是
str1 == str2:false
str3 == str4:true

人已赞赏
Java

java中 深拷贝和浅拷贝的区别【面试题详解】

2020-10-31 11:02:18

Java

java中 垃圾回收机制【面试题详解】

2020-10-31 11:16:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();