Java题-直接赋值与重新创建内存
生活随笔
收集整理的這篇文章主要介紹了
Java题-直接赋值与重新创建内存
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天去面試了,其中有幾個(gè)筆試題,印象深刻(因?yàn)槲也粫?huì),所以印象深刻)
代碼如下:
package my;public class main {public static void main(String[] args) {String a="hello";String b="hello";String c=new String("hello");String d=new String("hello");System.out.println(a==b);System.out.println(c==d);System.out.println(a==c);}}運(yùn)行結(jié)果如下:
造成這個(gè)結(jié)果的原因是(百度的):
如果是直接賦值的是取常量池的數(shù)據(jù), 如果是new的,永遠(yuǎn)都是重新創(chuàng)建內(nèi)存.所以 s == d 因?yàn)樵趏bject比較中 ==比較的是內(nèi)存地址, 而new String()是告訴jvm重新創(chuàng)建一塊內(nèi)存. "hello"就是一個(gè)匿名對(duì)象, 引用的還是常量池的 你只需要理解 對(duì)象中==比較的是內(nèi)存地址即可, new就是開(kāi)辟一塊內(nèi)存
總結(jié)
以上是生活随笔為你收集整理的Java题-直接赋值与重新创建内存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 禁用msi模式,禁用MSI模
- 下一篇: Java高级语法笔记-匿名类(Anony