请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于堆和常量池

老师,请问下以下两种情况是否这么理解
1.String str = new String(“a”);执行该语句的时候意思时候会在堆产生一个a的对象还有常量池也会生成一个a的对象,然后str引用指向的是堆内存的对象
2.String a = "a"执行该语句的话a引用指向的是常量池的对象

正在回答 回答被采纳积分+3

1回答

翔仔 2020-08-17 11:48:20

同学好,是的哈,但是 new String(“a”)的时候,a只在堆创建(1.8以后),在常量池里没有

0 回复 有任何疑惑可以回复我~
  • 提问者 慕函数6034000 #1
    老师,请问下String s = new String("a") + new String("a");这个语句生成的aa是存放在那里。这句话是等价于String s= new String("aa")呢还是String s = "aa"
    回复 有任何疑惑可以回复我~ 2020-09-03 00:01:17
  • 翔仔 回复 提问者 慕函数6034000 #2
    同学好,sorry,前面那个问题仔细看了下,上一个回答更正一下, new String(“a”)的时候,a既在堆创建(1.8以后,遇到new就会在堆创建),也在常量池里创建"a"
    所以String s = new String("a") + new String("a")和后面两个不等价
    回复 有任何疑惑可以回复我~ 2020-09-03 01:23:25
  • 提问者 慕函数6034000 回复 翔仔 #3
    老师,这边还有两个问题不是很
    1。那String s = new String("a") + new String("a");
    s指向的aa是存放在哪里呢
    2。执行一个方法的时候是会往虚拟机栈中压入一个栈桢还是一个方法中的每个语句就是一个栈桢
    
    第二个问题在书看到的描述事“执行一个方法的的时候就会往虚拟机栈中压入一个栈桢”,但是老师你后面讲的那个图(add(int , int)例子),意思是方法中的一个语句就会往虚拟机栈中压入一个栈桢么。
    回复 有任何疑惑可以回复我~ 2020-09-04 11:36:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信