Java中如何正確定義字符串
前言
字符串是 Java 中特殊的類,使用方法像一般的基本數(shù)據(jù)類型,被廣泛應(yīng)用在 Java 編程中。Java 沒有內(nèi)置的字符串類型,而是在標(biāo)準(zhǔn) Java 類庫中提供了一個 String 類來創(chuàng)建和操作字符串。
在 Java 中定義一個字符串最簡單的方法是用雙引號把它包圍起來。這種用雙引號括起來的一串字符實際上都是 String 對象,如字符串“Hello”在編譯后即成為 String 對象。因此也可以通過創(chuàng)建 String 類的實例來定義字符串。
不論使用哪種形式創(chuàng)建字符串,字符串對象一旦被創(chuàng)建,其值是不能改變的,但可以使用其他變量重新賦值的方式進(jìn)行更改。
一、直接定義字符串
直接定義字符串是指使用雙引號表示字符串中的內(nèi)容,例如“Hello Java”、“Java 編程”等。具體方法是用字符串常量直接初始化一個 String 對象,示例如下:
String str = "Hello Java"; String str; str = "Hello Java";
舉例說明:
String str = "我是一只小小鳥"; // 結(jié)果:我是一只小小鳥 String word; word = "I am a bird"; // 結(jié)果:I am a bird word = "<h1>to fly</h1>"; // 結(jié)果:<h1>to fly</h1> word = "Let\'s say that it\'s true"; // 結(jié)果:Let's say that it's true System.out.println(word); word = "北京\\上海\\廣州"; // 結(jié)果:北京\上海\廣州
二、使用 String 類定義
String 類的構(gòu)造方法有多種重載形式,每種形式都可以定義字符串。下面介紹最常用的幾種形式。
1. String()
初始化一個新創(chuàng)建的 String 對象,表示一個空字符序列。
2. String(String original)
初始化一個新創(chuàng)建的 String 對象,使其表示一個與參數(shù)相同的字符序列。換句話說,新創(chuàng)建的字符串是該參數(shù)字符串的副本。例如:
String str1 = new String("Hello Java");
String str2 = new String(str1);這里 str1 和 str2 的值是相等的。
3. String(char[ ]value)
分配一個新的字符串,將參數(shù)中的字符數(shù)組元素全部變?yōu)樽址?。該字符?shù)組的內(nèi)容已被復(fù)制,后續(xù)對字符數(shù)組的修改不會影響新創(chuàng)建的字符串。例如:
char a[] = {'H','e','l','l','0'};
String sChar = new String(a);
a[1] = 's';上述 sChar 變量的值是字符串“Hello”。 即使在創(chuàng)建字符串之后,對 a 數(shù)組中的第 2 個元素進(jìn)行了修改,但未影響 sChar 的值。
4. String(char[] value,int offset,int count)
分配一個新的 String,它包含來自該字符數(shù)組參數(shù)一個子數(shù)組的字符。offset 參數(shù)是子數(shù)組第一個字符的索引,count 參數(shù)指定子數(shù)組的長度。該子數(shù)組的內(nèi)容已被賦值,后續(xù)對字符數(shù)組的修改不會影響新創(chuàng)建的字符串。例如:
char a[]={'H','e','l','l','o'};
String sChar=new String(a,1,4);
a[1]='s';上述 sChar 變量的值是字符串“ello”。該構(gòu)造方法使用字符數(shù)組中的部分連續(xù)元素來創(chuàng)建字符串對象。offset 參數(shù)指定起始索引值,count 指定截取元素的個數(shù)。創(chuàng)建字符串對象后,即使在后面修改了 a 數(shù)組中第 2 個元素的值,對 sChar 的值也沒有任何影響。
附:字符串轉(zhuǎn)換與截取
字符串拼接的底層原理
1)如果沒有變量參與,都是字符串直接相加,編譯之后就是拼接的結(jié)果,會復(fù)用串池中的字符串。
2)如果有變量參與,每一行拼接的代碼,都會在內(nèi)存中創(chuàng)建新的字符串,浪費內(nèi)存。
public class Test{
public static void main(String[] args){
String s1 = "abc";
String s2 = "ab";
String s3 = s2+"c";
String s4 = "a"+"b"+"c";
System.out.println(s1 == s3); //false,因為s3有變量相加,會創(chuàng)建新的字符串
System.out.println(s1 == s4); //true, s4沒有變量參與,會復(fù)用已存在的字符串,與s1地址一樣
}
}字符轉(zhuǎn)換成int型
char ch = str.charAt(i); int n = ch -48; //48代表字符‘0'
修改字符串內(nèi)容
1)使用subString截取
String s = "abcd"; char ch = s.charAt(0); //拿到第一個字符 String se = s.subString(1); //拿到從1開始的字符串至結(jié)尾 return se + ch; //拼接成新的字符串
2)將字符串變?yōu)樽址麛?shù)組,操作完再將其轉(zhuǎn)化為字符串
String s = "abcd";
char[] cs = s.toCharArray();
char first = cs[0]; //拿到第一個字符
for(int i = 1; i < cs.length; i++ ){
cs[i-1] = cs[i]; //將后面的字符依次前移
}
cs[cs.length-1] = first; //將第一個字符放到最后
String str = new String(cs); //創(chuàng)建新字符串
return str;總結(jié)
到此這篇關(guān)于Java中如何正確定義字符串的文章就介紹到這了,更多相關(guān)Java定義字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性
直接調(diào)用原生Save方法會導(dǎo)致null屬性覆蓋到數(shù)據(jù)庫,使用起來十分不方便。本文詳細(xì)的介紹了如何解決這個問題,非常具有實用價值,需要的朋友可以參考下2018-12-12
Spring如何使用AOP實現(xiàn)聲明式事務(wù)管理
Spring?使用?AOP?實現(xiàn)聲明式事務(wù)管理是其最強(qiáng)大的功能之一,這篇文章小編將詳細(xì)拆解這個過程,從高層概念到底層原理,感興趣的小伙伴可以參考一下2025-06-06
Spring?boot事務(wù)無效報錯:Transaction?not?enabled問題排查解決
在業(yè)務(wù)代碼中經(jīng)常需要保證事務(wù)的原子性,但是有的時候確實是出現(xiàn)事務(wù)沒有生效,這篇文章主要給大家介紹了關(guān)于Spring?boot事務(wù)無效報錯:Transaction?not?enabled問題排查的相關(guān)資料,需要的朋友可以參考下2023-11-11

