java new基本类型对象,是放在堆中还是栈中

hw120219 2017-12-12 05:55:21
String e=new String("a");
String f="a";
System.out.println(e==f);
结果为何返回false
如果new的对象放在栈中,应该放在常量池中,应该是true。
如果放到堆中,可是基本类型不都是放在栈上吗?
...全文
2270 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnmaxixi 2021-01-11
  • 打赏
  • 举报
回复
比如 class 1 { A = new class2() main() { B = new class3() } } 类的实例A B是不是都存在堆内存中?
csdnmaxixi 2021-01-11
  • 打赏
  • 举报
回复
比如 class 1 { int a main() { int b} } 数据a b是不是都存在栈中?
csdnmaxixi 2021-01-11
  • 打赏
  • 举报
回复
假设在类A的main方法里 new类B 的实例, 那个这个B的实例 是放在栈中 还是 堆中? 放在堆中的话 ,理论上来说它其实是类A的局部变量。 还是说只要NEW出来的对象实例,都是放在堆中? 不管它是在方法体的外,还是内 。 只要是NEW出来的 ,就放到堆里, 那方法体之外不是 NEW出来的变量呢? 比如int A .(它 是类A的全局变量,它应该在栈里还是堆里)。 我现在有点糊涂的是, 存在堆里还是栈里 是依据数据类型来的吗? 只要是基本数据类型 比如 int char double 这些都放到栈里, 只要是引用数据类型都放到堆里? 比如string 比如 自定义的类的实例。 和全局 ,局部没有关系?
KaiRyuuSD 2019-08-06
  • 打赏
  • 举报
回复 2
String e=new String("a");//创建了两个对象:一个将“a”存放在常量池(字符串池)中,一个new的在栈中存放引用。 String f="a";//没有创建对象:先找常量池中有没有“a”,发现有,因此直接从池中取出而不创建新对象。 System.out.println(e==f); //双等对于基本类型数据比较的是值,而这里对于对象来说是比较的引用: //如果输出System.identityHashCode(e),返回的应该是e在栈中的“地址”。 //所以e==f应该是比较的e在栈中的“地址”和f在常量池中的“地址”(e跟f共用常量池中的一块“地址”)
遥远的想念 2017-12-13
  • 打赏
  • 举报
回复
== 同时还比较地址的值,如果不是同一个对象,肯定不相等。又因为new出来的对象是新分配的一个内存地址空间,所以不会相等
张三顺 2017-12-13
  • 打赏
  • 举报
回复
new 出来的对象,指向的是内存地址值; “” 字符串是从常量池里面拿的; 结果肯定是false啊; 例如:String a = “A”;String b = “A”; 这两个都是从常量池拿的, a== b 为true String a = new String(“A”);String b = new String(“A”);这两个完全是两个不同的内存地址值,a == b 为false
自由自在_Yu 2017-12-13
  • 打赏
  • 举报
回复
系统内存一般情况来说分为四个 heap 堆 放 对象 也就是new 出来的东西 stack 栈 放局部变量 static segment 静态区 用来放 静态变量 和字符串常量 data segement 代码区 用来放代码的 String e=new String("a"); //e是存放在堆内存里,栈内存里存放e对应的引用地址 String f="a"; //f存放在栈内存的常量池中, String不是基本类型,直接定义的String f="a";存放在常量池,new出来的就是放在堆内存
xls丶 2017-12-13
  • 打赏
  • 举报
回复
new的对象肯定放在堆里啊
xigongdaacm 2017-12-12
  • 打赏
  • 举报
回复
使用String a="xx";是字符串常量,存在栈的常量池中,但是使用String b = new String("xx");就是重新new一个对象,这个是存放在堆中的。 如上比较,肯定返回false;
广寒月蛮兔 2017-12-12
  • 打赏
  • 举报
回复
String是对象,==相当于比较两个对象的地址,栈中保存的是引用变量,常量池不在堆栈中是独立的一个内存空间
Java155 2017-12-12
  • 打赏
  • 举报
回复
String在Java中不是基本类型……

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧