java中String類型變量的賦值問題介紹
運行下面這段代碼,其結(jié)果是什么?
package com.test; public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String[] args) { Example ex = new Example(); ex.change(ex.str, ex.ch); System.out.println(ex.str); System.out.println(ex.ch); } public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } }
結(jié)果如下:
good gbc
解說:
java 中String是 immutable的,也就是不可變,一旦初始化,其引用指向的內(nèi)容是不可變的(注意:是內(nèi)容不可變)。
也就是說,假設(shè)代碼中有String str = “aa”;str=“bb”;,則第二條語句不是改變“aa”原來所在存儲地址中的內(nèi)容,而是另外開辟了一個空間用來存儲“bb”;同時由于str原來指向的“aa”現(xiàn)在已經(jīng)不可達(dá),jvm會通過GC自動回收。
在方法調(diào)用時,String類型和數(shù)組屬于引用傳遞,在上述代碼中,str作為參數(shù)傳進(jìn)change(String str, char ch[]) 方法,方法參數(shù)str指向了類中str指向的字符串,但str= "test ok"; 語句使得方法參數(shù)str指向了新分配的地址,該地址存儲“test ok”,而原來的str仍然指向“good”。對于數(shù)組而言,在change方法中,方法參數(shù)ch指向了類中ch指向的數(shù)組,ch[0] = 'g';語句改變了類中ch指向的數(shù)組的內(nèi)容
我們再來看下面這段代碼,它的運行結(jié)果是什么?
package com.test; public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String[] args) { Example ex = new Example(); ex.change(ex.str, ex.ch); System.out.println(ex.str); System.out.println(ex.ch); } public void change(String str, char ch[]) { str = str.toUpperCase(); ch = new char[]{ 'm', 'n' }; } }
結(jié)果如下:
good abc
有了前面的解釋,這個結(jié)果是不是在意料之中?!
以上這篇java中String類型變量的賦值問題介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript 鍵盤event.keyCode值列表大全
event.keyCode值列表大全,對于需要根據(jù)鍵盤按鍵觸發(fā)相應(yīng)事件的朋友需要。2010-08-08深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇)
這篇文章主要介紹了深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇),本篇主要是介紹創(chuàng)建對象方面的模式的下篇,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼,需要的朋友可以參考下2015-03-03ajax提交表單實現(xiàn)網(wǎng)頁無刷新注冊示例
這篇文章主要介紹了ajax提交表單實現(xiàn)網(wǎng)頁無刷新注冊示例,需要的朋友可以參考下2014-05-05javascript的原生方法獲取數(shù)組中的最大(最小)值
獲取一個數(shù)組中的最大(最?。┲档淖詈唵蔚姆椒?,就是對數(shù)組進(jìn)行一次遍歷,通過比較,找到其最大(最?。┲怠5瞧鋵嵲趈avascript的原生方法中,已經(jīng)提供了一些快捷方法,可以實現(xiàn)此功能,需要的朋友可以了解下2012-12-12javascript實現(xiàn)的網(wǎng)頁局布刷新效果
AJAX,近幾年火熱起來的一個詞.什么是ajax本文就不介紹了,其實,AJAX也就是 javascript腳本的應(yīng)用.全拼是:AsynchronousJavaScript+XML .現(xiàn)在我們就來看一個用javascript實現(xiàn)的局部刷新2008-12-12