String類物件兩種建立方法的區別
java將記憶體分為四種:堆、棧、方法體、程式計數器。一般基本資料型別存放在棧中,物件型別存放在堆中。
建立String字串的方法兩種。無論哪種方法建立的字串都是不可以改變的。先來看方法一:
String a="hello";
這種方法建立字串後會有一個字串池來儲存內容,而棧空間存的是這個字串的地址。這種方法建立的字串在作為函式引數時是值傳遞。
第二種方法:
String b=new String("java");
這種方法在建立字串對像的同時,還會在String pool中建立一個物件。因此執行了上面語句後實際上建立了兩個物件。
但是這種方法建立的字串在傳遞時是引用傳遞。本應傳遞引用,但String 是不可變物件,所以在其值建立後,無法對其值做修改,所以跟值傳遞一個效果。
順便記錄下以前的一個疑惑:
String a="hello";
a="java";
執行完上述語句後,輸出a結果是:java。這是否說明String的字串建立後是可以改變的呢?答案是否定的。
其實,a從hello變為java不是hello被改成了java,而是系統又建立了一個物件,內容為java,a只是從指向hello變為指向java而已。下節:String類中判斷物件關係時“==”和equals()的區別。
相關推薦
String類物件兩種建立方法的區別
java將記憶體分為四種:堆、棧、方法體、程式計數器。一般基本資料型別存放在棧中,物件型別存放在堆中。建立String字串的方法兩種。無論哪種方法建立的字串都是不可以改變的。先來看方法一:String a="hello";這種方法建立字串後會有一個字串池來儲存內容,而棧空
day030程序的兩種建立方法,驗證程序的空間隔離,join等待子程序
本節內容: 1.作業系統的簡單介紹 2.程序的兩種建立方法 3.程序之間是空間隔離的, 參考文章: 一、作業系統的簡單介紹 1、作業系統簡單介紹 作業系統就是一個協調、管理和控制計算機硬體資源和軟體資源的控制程式。 作業系統位於計算機硬體與應用軟體之間,本質也是一個軟體。 作業系統由作業系統的核心(
String類的20種常見方法
String類裡面常用的20個方法和長度有關的方法返回型別 方法名 作用 int length() 得到一個字串的字元個數(一箇中文是一個字元,一個英文是一個字元,一個轉義字元是一個字元) 和陣列有關的方
java -- 多執行緒的兩種建立方法
什麼是程序? 什麼是執行緒? 個人感覺比較好理解 怎麼建立多執行緒? 建立多執行緒有兩種方式: 1, 繼承 Thread 類。 2, 實現 Runnable 介面 先來看看第一種方法
[IOS 開發] UIImage類的物件兩種初始化方法的區別
1、imageNamed: 1 UIImage *image = [UIImage imageNamed:@"1"]; UIImage的類方法 第一次讀取圖片的時候,先把這個圖片放到快取中,下次再使用這個名字的圖片時,直接從快取中讀取;如果快取中不存在這個名字的影象
java String轉Long兩種方法區別
基本數據 ring oat 兩種 基本 ava ger parse 兩種方法 第一種:包裝類型:Byte,Integer,Short,Long,Boolean,Character,Float,Double等8種 Long.valueOf("String")返回Long包裝
建立執行緒類的兩種方法對比
建立執行緒有兩種方法 1.繼承Thread類建立執行緒類 步驟 (1)定義Thread類的子類,並重寫run()方法 (2)建立Thread子類的例項 (3)呼叫start()方法啟動執行緒 例子: public class myThread extends Thread(
執行緒的兩種建立方式:Thread類和Runnable介面,它們都要複寫run方法
/*執行緒: * 1.如何在自定義的程式碼中,自定義一個執行緒呢? * * 通過對API的查詢,java已提供了對執行緒這類事物的描述。就是Thread類 * * 建立執行緒的第一種方式:繼承Thread類。 * 步驟: * 1.定義類繼承Thread。
C++類物件共享資料的兩種實現方法
class sample { private:char *m_pArray;static int m_sCount; size_t m_size; public:sample(){ m_size = 20;m_pArray = new char[m_size];memset(m_pArray, 0, m_si
建立String的兩種方式的區別
在建立String物件時,通常來講,有兩種方式,一是new型:String s = new String("abc");另一種是雙引號型:String s = "abc";那麼這兩種方式有什麼區別呢? 答:這兩種方法生成的字串物件,在記憶體中的存取機制不同。 Java為St
Java程式設計之TreeSet排序兩種解決方法(1)元素自身具備比較功能,元素需要實現Comparable介面覆蓋compare(2)建立根據自定義Person類的name進行排序的Comparator
當很多人問我讀研到底好不好的時候,我總是說上研很苦逼,讀完研之後都不知道自己能不能找到工作,所以不建議同學們讀研~即使要讀也讀一個985或者211的研究生,這是我肺腑之言。但還有一半我沒說完,讀研的時候你可能會找到你喜歡的活動,會遇到一些願意和你一起玩的玩伴,
jQuery使用serialize(),serializeArray()方法取得表單數據+字符串和對象類型兩種表單提交的方法
var fun .ajax clas copy art 表單提交 post 姓名 轉載自: http://blog.csdn.net/zqtsx/article/details/28655717 原始form表單值獲取方式(手動): [javascript] v
GET和POST兩種請求方法的區別(RFC翻譯)
GET和POST方法是HTTP協議規定的。查了HTTP1.1的RFC,原文的專業性極強。下面是白話翻譯,歡迎補充和指錯。 GET方法就是檢索(以實體的形式)由請求uri所指定的資源。如果請求的uri指向資料產生的過程,應該把產生的資料應作為實體在響應中返回而不是源文字,除非原始檔指向輸出過
"=="和"equals"兩種比較方法的區別
基本資料型別 “==”兩個變數的值是否相同,不比較地址 引用資料型別(類) ”==”比較兩個物件的引用,是否指向同一個記憶體空間; “equals()”比較兩個物件所指向的記憶體空間的值是否相同; 例: int i=10,j=i;
Java兩種建立執行緒方式的區別
建立一個執行緒 Java 提供了三種建立執行緒的方法: 通過實現 Runnable 介面; 通過繼承 Thread 類; 通過 Callable 和 Future 建立執行緒。 這裡只介紹兩種第一種和第二種。 1.以建立Runnable介面例項
Revit 二次開發建立房間的兩種常用方法
1,使用閉合路徑 Transaction ts = new Transaction(doc, "BIM"); ts.Start(); try { Level l
new建立類物件與直接定義的區別
new建立物件的特點 new建立類物件需要指標接收,一處初始化,多處使用new建立類物件使用完需delete銷燬new建立物件直接使用堆空間,而區域性不用new定義類物件則使用棧空間new物件指標用途廣泛,比如作為函式返回值、函式引數等頻繁呼叫場合並不適合new,就像ne
SparkStreaming部分:OutPutOperator類,SaveAsHadoopFile運算元(實際上底層呼叫textFileStream讀取的,跟前兩種有一些區別)【Java版純程式碼】
package streamingOperate.output; import java.util.Arrays; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; imp
執行緒有兩種實現方法的具體區別
Java中有兩種實現多執行緒的方式。一是直接繼承Thread類,二是實現Runnable介面。那麼這兩種實現多執行緒的方式在應用上有什麼區別呢? 第一種方式:使用Runnable介面建立執行緒第二種方式:直接繼承Thread類建立物件使用Runnable介面建立執行緒1.可
HBase 建立表已經存在,刪除表又不存在的問題的兩種解決方法
錯誤提示資訊: 用list 檢視student表 發現沒有student表的資訊 通過Web Console 查看錶的資訊 也沒有表的任何資訊 用scan 檢視student表,發現也沒有任何的資訊 通過以上的嘗試,現在只能檢視Zoo