1. 程式人生 > >java String類字串常量的理解

java String類字串常量的理解

java為字串常量在字串緩衝池中分配記憶體:
  (1) 池中常量記憶體空間只讀不寫

   (2)池中字串常量不重複,相同的字串為同一記憶體空間

例如:

String s1="ab";   //在池中分配一塊記憶體用於存放常量"ab"

 String s2="ab";   //由於池中存在"ab",引用變數a指向存在的"ab"記憶體空間首地址。所以s1和s2指向同一池中"ab"的記憶體空間

String s3="a";//在池中新分配一塊記憶體用於存放常量"a"

String s4="a"+"b";//在池中新分配用於存放"b"的臨時記憶體,合併將池中的"a"和"b"為"ab",因"ab"已存在,所以不再新分配記憶體,將已存在的"ab"記憶體地址賦值給引用變數s4.

String s5=s3+"b";  //引用變數和字元常量"b"連線執行,在堆區分配一塊記憶體存放合併後的"ab",並將其首地址賦值給引用變數d

String e=new String("ab");  //在堆區分配一塊記憶體存放"ab",並將其首地址賦值給引用變數e.

String 型別的引用變數直接判斷“==”,比較的是引用變數其在棧記憶體的內容,即變數指向的字串常量例項記憶體的首地址。
若要判斷其指向的例項內容是否相等,需要使用equals方法完成。

相關推薦

java String字串常量理解

java為字串常量在字串緩衝池中分配記憶體:   (1) 池中常量記憶體空間只讀不寫    (2)池中字串常量不重複,相同的字串為同一記憶體空間 例如: String s1="ab";   //在池中分配一塊記憶體用於存放常量"ab"  String s2="ab";

Java String引起的常量池、String型傳參、“==”、“equals”、“hashCode”問題 細節分析

怎麽辦 理解 amp 標準 col 要求 oid font 說明   在學習javase的過程中,總是會遇到關於String的各種細節問題,而這些問題往往會出現在Java攻城獅面試中,今天想寫一篇隨筆,簡單記錄下我的一些想法。話不多說,直接進入正題。 1.String常量池

javaString的使用理解

1_String類的概述 A:String類的概述 通過JDK提供的API,檢視String類的說明 可以看到這樣的兩句話。 a:字串字面值"abc"也可以看成是一個字串物件。 b:字串是常量,一

java String-獲取兩個字串的最長相同子串

/* 獲取兩個字串中最大相同子串。枚舉出長度較短的字串的所有子串。將子串放在字串陣列中。 通過迴圈判斷長度較長的字串中是否包含字串陣列中的元素,並返回包含且最長的子字串。 */ class Stri

java String-獲取一個字串在另一個字串中出現的次數

<pre name="code" class="html">//另一種方法 class StringTest3_1 { public static void main(String[]

java--String練習---計算字串的次數

//       2: 編寫一個方法,輸出在一個字串中,指定字串出現的次數。 /*  * 思路:應該先搜尋指定的字串 則要用indexOf(),然後要進行迴圈  可以用while(),另外訓還不能重複,要用到  * substring(int beginIndex)返回該字

java String有關靜態變數,常量池,引用物件的問題

java String類有關靜態常量,常量池,引用物件的問題 今天看到一個面試題,這讓我對String類和jvm執行資料有新的瞭解,題目如下: static String str0="0123456789"; static String str1="0123

深入理解Java String

一、String類 想要了解一個類,最好的辦法就是看這個類的實現原始碼,來看一下String類的原始碼: public final class String implements java.io.Serializable, Comparable&

Java中,那些關於String字串常量池你不得不知道的東西

## 老套的筆試題 在一些老套的筆試題中,會要你判斷s1==s2為false還是true,s1.equals(s2)為false還是true。 ```java String s1 = new String("xyz"); String s2 = "xyz"; System.out.println(s1 =

Java String

count 包含 第一個字母大寫 獲取 rgs ret lower charat index 1 package demo03; 2 3 //String類的構造方法 4 public class StringDemo { 5 public stati

JAVA- String練習

log bsp str ava sta system == subst color JAVA- String類練習 需求1:去除字符串兩邊空格的函數,寫一個自己的trim(); 1 public class TestTrim { 2 public static

Java——String(常用

get build pan spa 長度 endwith 同步 兩個 charat 一、String類——描述字符串 常用的方法簡單介紹: 1.charAt()    獲取對應位置的字符 2.length()    獲取字符串的長度 3.concat()    在字符串的尾

java-String

post () rgs blog 類重寫 static 返回 pub 改變 package com.day6.one; public class StringDemo {   /**   * @param args   * 1.字符串字面值"abc"也可以看成是一個字

java-String中的各字符串判斷(包括" "和null的區別)

mos 大小 既然 main 引用數據類型 同時 ins emp gpo package com.day7.one; public class DemoString1 {   /**   * @param args   * 1.boolean equals(Objec

Java String

方式 src 格式化數字 charat 索引 big 存儲 另一個 不同的 創建字符串創建字符串最簡單的方式如下:String greeting = "菜鳥教程";在代碼中遇到字符串常量時,這裏的值是 "菜鳥教程"",編譯器

JAVA String型和原型模式

語言 fin 相同 案例 裏的 ces pos iter 程序 如上例所述,變量a,b和它們的值10,20都是存在棧裏面,聲明的所以String類型的引用也都是存在棧裏。而字符串abc是存在字符串常量池中,new出來的String對象則是存在堆裏。 String str="

自己動手寫Java String

實現string ins cas 沒有 min 操作方法 str2 override 英文 很早想造個輪子了,聽說不想造輪子的程序員不是好程序員,用慣了Apache的眾多開源項目,卻沒看過開源一句代碼。最近看了幾篇賣焦慮的文章之後,突然變得慌張起來,於是在百忙之中難得一點閑

String --- 字串

字串地址問題 定義字串時的地址 在java中字串用String定義,用不同方法定義的字串儲存位置不同,具體如下: String str1 = "hello"; String str2 = new String("hello"); String str3 = "he"+"llo";

Java String 的學習

1.equals()方法 重寫了父類的equals()方法,父類(Object)的equals()方法的比較和"=="一樣,都是比較的地址;重寫後,在比較地址的基礎上面加了一個條件(字串的長度和字串的內容一致),只要滿足這兩個條件其中一個,即相等。重寫的equals()方法如下圖:  

Java基礎之字串常量

字串常量用於表示一串連續的字元,一個字串常量要用一對英文半形格式的雙引號(" ")引起來。 "HelloWorld" "123" "Welcome \m XXX" "" 一個字串可以包含一個字元或多個字元,也可以不包含任何字元,即長度為零。   本資源用於文章http