複製鏈接
請複製以下鏈接發送給好友

字符串常量

鎖定
定義:用雙引號(“”)括起來的0個或者多個字符組成的序列
存儲:每個字符串尾自動加一個 ‘\0’ 作為字符串結束標誌
中文名
字符串常量
外文名
string lteral

字符串常量含義

字符串常量常量的本質

不佔據任何存儲空間屬於指令的一部分,編譯後不再更改。
字符串常量是一對雙引號括起來的字符序列。
字符常量可以賦值給字符變量,如"char b='a';",但不能把一個字符串常量賦給一個字符變量,同時也不能對字符串常量賦值!
例如下面的是合法的字符串常量:
"how do you do.","CHINA","a","$123.45"“C language programming”、“a\\n”、“#123”、“ ”等為字符串常量
存儲:字符串中的字符依次存儲在內存中一塊連續的區域內,並且把空字符‘ \0’自動附加到字符串的尾部作為字符串的結束標誌。故字符個數為n的字符串在內存中應占(n+1)個字節
可以輸出字符串,例如:
printf("how do you do.");

字符串常量字符串

字符串是由零個或多個字符組成的有限序列。一般記為 s =“a1 a2…an”( n > =0) 。它是編程語言中表示文本的數據類型,代表具有一定意義的信息,現實世界的大部分信息都以字符串的形式表示。對於一種編程語言來説,字符串處理是許多需要進行的重要任務之一,如用户程序輸入信息、程序向用户顯示信息等。所以幾乎每一種編程語言都要有專門針對字符串的表示和操作。 [1] 

字符串常量與字符常量的比較

C語言允許使用字符串常量外,還允許使用字符常量。

字符串常量與字符數組的關係

在C語言中沒有專門的字符串變量,如果想將一個字符串存放在變量中以便保存,必須使用字符數組,即用一個字符型數組來存放一個字符串,數組中每一個元素存放一個字符。例如“char a[10]="love".”

字符串常量與指針的關係

在程序中,字符串常量會生成一個“指向字符的常量指針”。當一個字符串常量出現於一個表達式中時,表達式所使用的值就是這些字符所存儲的地址,而不是這些字符本身。因此,你可以把字符串常量賦值給一個“指向字符 的指針”,例如:char *a = "123" ; a = "abc";,後者指向這些字符所存儲的地址。但是,你不能把字符串常量賦值給一個字符數組,因為字符串常量的直接值是一個指針,而不是這些字符本身。例如:char a[5];a[0] = "a";就是錯誤的,報錯結果:invalid conversion from 'const char*' to 'char'。
例如:char a[10]="love",的意思就是用字符串“love”來初始化字符數組a的內存空間,而數組的首地址也就是“love”字符串的地址。

字符串常量字符串常量 String 類 字符串常量的創建

Java 語言是純粹的面向對象的語言,所以它的字符串是用對象表示的,Java 語言的字符串分為字符串常量( 用 String 類的對象表示) 和字符串變量( 用 StringBuffer 類的對象表示) ,它們都位於java. lang 包中,他們除了能夠表示字符串外,還定義了很多專門進行字符串的處理方法。
和創建其它的任一種對象的方式相同,創建String 對象也需要調用它的構造方法來完成,如:String s = new String( “abc”) ; 也可用另一種直接賦值 的 方 式 來 創 建 String 對 象,如: String s =“abc”;雖然通過以上兩種方式都可以創建 String 對象,但是二者在創建對象時採用的內存分配方式是不同的。如果是按照以下調用構造方法的形式來 創 建 String 對 象: String s1 = new String( “abc”) ; String s2 = new String( “abc”)。s1 和 s2 分別佔有獨立的內存空間,利用“= = ”相比較的話,則 s1 = =s2 的結果為 false。但是由於在程序中經常出現大量 String 對象的值相同的情況,造成內存空間的冗餘。為了有效地利用內存,Java 中預留了一塊特殊的內存區域,稱為 String 常量池。當編譯器遇到一個 String 常量時,先檢查常量池中是否存在值相同的 String 常量,如果存在,則把該常量的引用指向常量池中的 String 常量。 [1] 
參考資料
  • 1.    鄭霞,郭磊. Java語言中字符串常量和變量的分析與比較[J]. 安陽師範學院學報. 2012(02)