亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

詳解 JAVA 創建對象 NEW

系統 2046 0
假設我們在函數中寫了如下這個簡單的語句:

  StringBuffer str = new StringBuffer("Hello world");

  別看這個語句簡單,其實包含了如下三個步驟:

  首先,newStringBuffer("Helloworld")在堆里申請了一坨內存,把創建好的StringBuffer對象放進去。

  其次,StringBufferstr聲明了一個指針。這個指針本身是存儲在棧上的(因為語句寫在函數中),可以用來指向某個StringBuffer類型的對象。或者換一種說法,這個指針可以用來保存某個StringBuffer對象的地址。

  最后,當中這個等于號(賦值符號)把兩者關聯起來,也就是把剛申請的那一坨內存的地址保存成str的值。

詳解<wbr>JAVA<wbr>創建對象<wbr>NEW
詳解<wbr>JAVA<wbr>創建對象<wbr>NEW
<wbr><a target="_blank"><img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" name="image_operate_1241321971962955" alt="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" title="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" height="315" width="400"></a><br><br><a target="_blank"></a><br><br><center> <table align="center" border="0" cellpadding="1" cellspacing="4"><tbody> <tr> <td align="center" valign="top"><strong><img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" title="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" border="1" height="315" width="400"></strong></td> </tr> <tr> <td align="center" valign="top"></td> </tr> </tbody></table> </center>   <strong>引用對象之間的賦值、判相等</strong> <p>  通過上述的圖解,大伙兒應該明白指針變量和該指針變量指向的對象是一個什么關系了吧。</p> <p>  還是接著剛才的例子,再來看賦值的問題。對于如下語句:</p> <p>  StringBuffer str2 = str;</p> <p>  這個賦值語句是啥意思捏?實際上就是把str的地址復制給str2,記住,是地址的復制,StringBuffer對象本身并沒有復制。所以兩個指針指向的是同一個東東。</p> <p>  再搞一張示意圖,如下(今天畫這些圖把我累壞了):</p> <p><a target="_blank"><img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" title="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW"></a><br><br></p> <center> <table align="center" border="0" cellpadding="1" cellspacing="4"><tbody> <tr> <td align="center" valign="top"><strong><img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" title="詳解&lt;wbr&gt;JAVA&lt;wbr&gt;創建對象&lt;wbr&gt;NEW" border="1" height="308" width="400"></strong></td> </tr> <tr> <td align="center" valign="top"></td> </tr> </tbody></table> </center> <p>  實際上兩個指針的值相同,則肯定是指向同一個對象(所以對象內容必定相同)。但是兩個內容相同的對象,它們的地址可能不一樣(比如克隆出來的多個對象之間,地址就不同)。</p> <p><wbr></wbr></p> <p><wbr></wbr></p> <p><strong>final常量的問題</strong></p> <p>  針對引用類型變量的final修飾符也是很多人搞混淆的地方。實際上final只是修飾指針的值(也就是限定指針保存的地址不能變)。至于該指針指向的對象,內容是否能變,那就管不著了。所以,對于如下語句:</p> <p>  final StringBuffer strConst = new StringBuffer();</p> <p>  你可以修改它指向的對象的內容,比如:</p> <p>  strConst.append(" ");</p> <p>  但是不能修改它的值,比如:</p> <p>  strConst = null;</p> <p>  <strong>傳參的問題</strong></p> <p>  引用類型(在函數調用中)的傳參問題,是一個相當扯的問題。有些書上說是傳值,有些書上說是傳引用。搞得Java程序員都快成神經分裂了。所以,我們最后來談一下“引用類型參數傳遞”的問題。</p> <p>  v還是拿剛才的例子,假設現在要把剛才創建的那一坨字符串打印出來,我們會使用如下語句:</p> <p>  System.out.println(str);這個語句又是什么意思捏?這時候就兩說了。</p> <p>  第一種理解:可以認為傳進函數的是str這個指針,指針說白了就是一個地址的值,說得再白一點,就是個整數。按照這種理解,就是傳值的方式。也就是說,參數傳遞的是指針本身,所以是傳值的。</p> <p>  第二種理解:可以認為傳進去的是StringBuffer對象,按照這種理解,就是傳引用方式了。因為我們確實是把對象的地址(也就是引用)給傳了進去。</p> </wbr>

詳解 JAVA 創建對象 NEW


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99爱视频精品免视看 | 久久频这里精品99香蕉久网址 | 亚洲欧美18v中文字幕高清 | 黄色影院在线看 | 日韩高清不卡在线 | 最新地址四虎www4hutv | 色综合a怡红院怡红院首页 色综合h | 2018天天操 | 国内精品免费一区二区三区 | 欧美性猛片xxxxⅹ免费 | 久久国产精品免费一区二区三区 | 亚洲欧洲国产精品久久 | 成人性生活免费看 | 成人私人影院在线观看网址 | 毛片免费观看久久欧美 | 亚洲狠狠婷婷综合久久久久图片 | 福利影院第一页 | 在线a亚洲视频播放在线观看 | 成人三级做爰在线观看男女 | 第一福利视频网 | 久久精品亚洲精品国产欧美 | 国产精品一区二区不卡 | 成人影院在线观看kkk4444 | 日日天日日夜日日摸 | 久久精品国产一区二区三区日韩 | 国产精品.com | 国产亚洲精品一区二区三区 | 久久精品在这里 | 日本又黄又爽又色的免费视频 | 浮力影院欧美三级日本三级 | 伊人久久精品亚洲精品一区 | 国产精品亚洲精品日韩已满 | 在线成人天天鲁夜啪视频 | 极品欧美人体xxxxoo | 毛片免费毛片一级jjj毛片 | 久久国产免费 | 亚洲欧美bt| 国内精品一区二区 | 4虎影院午夜在线观看 | 2021国产成人综合亚洲精品 | 四虎+网站+影院+网站 |