最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java.lang.String類的使用

 更新時間:2021年08月19日 16:40:52   作者:都是一家人  
這篇文章主要介紹了java.lang.String類的使用,以及字符串的相關(guān)知識,需要了解相關(guān)知識的小伙伴可以參考該篇文章

一、String的用法

String類在java.lang包中,java使用String類創(chuàng)建一個字符串變量,字符串變量屬于對象。java把String類聲明的final類,不能有子類。String類對象創(chuàng)建后不能修改,由0或多個字符組成,包含在一對雙引號之間,下面簡單的熟悉一下其常用的API

 java.lang.String  
 char charAt (int index)     返回index所指定的字符 
 String concat(String str)   將兩字符串連接 
 boolean endsWith(String str)    測試字符串是否以str結(jié)尾 
 boolean equals(Object obj)  比較兩對象 
 char[] getBytes     將字符串轉(zhuǎn)換成字符數(shù)組返回 
 char[] getBytes(String str)     將指定的字符串轉(zhuǎn)成制服數(shù)組返回 
 boolean startsWith(String str)  測試字符串是否以str開始 
 int length()    返回字符串的長度 
 String replace(char old ,char new)  將old用new替代 
 char[] toCharArray  將字符串轉(zhuǎn)換成字符數(shù)組 
 String toLowerCase()    將字符串內(nèi)的字符改寫成小寫 
 String toUpperCase()    將字符串內(nèi)的字符改寫成大寫 
 String valueOf(Boolean b)   將布爾方法b的內(nèi)容用字符串表示 
 String valueOf(char ch)     將字符ch的內(nèi)容用字符串表示 
 String valueOf(int index)   將數(shù)字index的內(nèi)容用字符串表示 
 String valueOf(long l)  將長整數(shù)字l的內(nèi)容用字符串表示 
 String substring(int1,int2)     取出字符串內(nèi)第int1位置到int2的字符串 

1.構(gòu)造方法

//直接初始化
String str = "abc";
//使用帶參構(gòu)造方法初始化
char[] char = {'a','b','c'};
String str1 = new String("abc");String str2 = new String(str);
String str3 = new String(char);

2.求字符串長度和某一位置字符

String str = new String("abcdef");
int strlength = str.length();//strlength = 7
char ch = str.charAt(4);//ch = e

3.提取子串

用String類的substring方法可以提取字符串中的子串,該方法有兩種常用參數(shù): 1)public String substring(int beginIndex)//該方法從beginIndex位置起,從當(dāng)前字符串中取出剩余的字符作為一個新的字符串返回。 2)public String substring(int beginIndex, int endIndex)//該方法從beginIndex位置起,從當(dāng)前字符串中取出到endIndex-1位置的字符作為一個新的字符串返回。

String str1 = new String("abcdef");
String str2 = str1.substring(2);//str2 = "cdef"
String str3 = str1.substring(2,5);//str3 = "cde"

4.字符串比較

1)public int compareTo(String anotherString)//該方法是對字符串內(nèi)容按字典順序進(jìn)行大小比較,通過返回的整數(shù)值指明當(dāng)前字符串與參數(shù)字符串的大小關(guān)系。若當(dāng)前對象比參數(shù)大則返回正整數(shù),反之返回負(fù)整數(shù),相等返回0。

2)public int compareToIgnoreCase(String anotherString)//與compareTo方法相似,但忽略大小寫。

3)public boolean equals(Object anotherObject)//比較當(dāng)前字符串和參數(shù)字符串,在兩個字符串相等的時候返回true,否則返回false。

4)public boolean equalsIgnoreCase(String anotherString)//與equals方法相似,但忽略大小寫。

String str1 = new String("abc");
String str2 = new String("ABC");
int a = str1.compareTo(str2);//a>0
int b = str1.compareToIgnoreCase(str2);//b=0
boolean c = str1.equals(str2);//c=false
boolean d = str1.equalsIgnoreCase(str2);//d=true

5.字符串鏈接

public String concat(String str)//將參數(shù)中的字符串str連接到當(dāng)前字符串的后面,效果等價于"+"

String str = "aa".concat("bb").concat("cc");
//相當(dāng)于String str = "aa"+"bb"+"cc";

6.字符串中單個字符查找

1)public int indexOf(int ch/String str)//用于查找當(dāng)前字符串中字符或子串,返回字符或子串在當(dāng)前字符串中從左邊起首次出現(xiàn)的位置,若沒有出現(xiàn)則返回-1。

2)public int indexOf(int ch/String str, int fromIndex)//改方法與第一種類似,區(qū)別在于該方法從fromIndex位置向后查找。

3)public int lastIndexOf(int ch/String str)//該方法與第一種類似,區(qū)別在于該方法從字符串的末尾位置向前查找。

4)public int lastIndexOf(int ch/String str, int fromIndex)//該方法與第二種方法類似,區(qū)別于該方法從fromIndex位置向前查找。

String str = "I really miss you !";
int a = str.indexOf('a');//a = 4
int b = str.indexOf("really");//b = 2
int c = str.indexOf("gg",2);//c = -1
int d = str.lastIndexOf('s');//d = 6
int e = str.lastIndexOf('s',7);//e = 7

7.大小寫轉(zhuǎn)換

1)public String toLowerCase()//返回將當(dāng)前字符串中所有字符轉(zhuǎn)換成小寫后的新串

2)public String toUpperCase()//返回將當(dāng)前字符串中所有字符轉(zhuǎn)換成大寫后的新串

String str = new String("abCD");
String str1 = str.toLowerCase();//str1 = "abcd"
String str2 = str.toUpperCase();//str2 = "ABCD"

8.字符串中字符的替換

1)public String replace(char oldChar, char newChar)//用字符newChar替換當(dāng)前字符串中所有的oldChar字符,并返回一個新的字符串。

2)public String replaceFirst(String regex, String replacement)//該方法用字符replacement的內(nèi)容替換當(dāng)前字符串中遇到的第一個和字符串regex相匹配的子串,應(yīng)將新的字符串返回。

3)public String replaceAll(String regex, String replacement)//該方法用字符replacement的內(nèi)容替換當(dāng)前字符串中遇到的所有和字符串regex相匹配的子串,應(yīng)將新的字符串返回。

String str = "asdzxcasd";
String str1 = str.replace('a','g');//str1 = "gsdzxcgsd"
String str2 = str.replace("asd","fgh");//str2 = "fghzxcfgh"
String str3 = str.replaceFirst("asd","fgh");//str3 = "fghzxcasd"
String str4 = str.replaceAll("asd","fgh");//str4 = "fghzxcfgh"

9.其他方法

1)String trim()//截去字符串兩端的空格,但對于中間的空格不處理。

String str = " a bc ";
String str1 = str.trim();
int a = str.length();//a = 6
int b = str1.length();//b = 4

2)boolean statWith(String prefix)或boolean endWith(String suffix)//用來比較當(dāng)前字符串的起始字符或子字符串prefix和終止字符或子字符串suffix是否和當(dāng)前字符串相同,重載方法中同時還可以指定比較的開始位置offset。

String str = "abcdef";
boolean a = str.statWith("ab");//a = true
boolean b = str.endWith("ef");//b = true

3)contains(String str)//判斷參數(shù)s是否被包含在字符串中,并返回一個布爾類型的值。

String str = "abcdef";
str.contains("ab");//true
str.contains("gh");//false

4)String[] split(String str)//將str作為分隔符進(jìn)行字符串分解,分解后的字字符串在字符串?dāng)?shù)組中返回。

String str = "abc def ghi";
String[] str1 = str.split(" ");//str1[0] = "abc";str1[1] = "def";str1[2] = "ghi";

10.類型轉(zhuǎn)換

  • 字符串轉(zhuǎn)基本類型 java.lang包中有Byte、Short、Integer、Float、Double類的調(diào)用方法:

public static byte parseByte(String s)
public static short parseShort(String s)
public static short parseInt(String s)
public static long parseLong(String s)
public static float parseFloat(String s)
public static double parseDouble(String s)

int n = Integer.parseInt("12");
float f = Float.parseFloat("12.34");
double d = Double.parseDouble("1.124");
  • 基本類型轉(zhuǎn)字符串 String類中提供了String valueOf()放法,用作基本類型轉(zhuǎn)換為字符串類型

static String valueOf(char data[])
static String valueOf(char data[], int offset, int count)
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(float f)
static String valueOf(double d)

//將char '8' 轉(zhuǎn)換為int 8
String str = String.valueOf('8');
int num = Integer.parseInt(str);
  • 進(jìn)制轉(zhuǎn)換 使用Long類中的方法得到整數(shù)之間的各種進(jìn)制轉(zhuǎn)換的方法:

Long.toBinaryString(long l)//二進(jìn)制
Long.toOctalString(long l)//十進(jìn)制
Long.toHexString(long l)//十六進(jìn)制
Long.toString(long l, int p)//p作為任意進(jìn)制

二、String特性

這一部分介紹String的一些特性,涉及到字符串常量池、String.intern()以及我們經(jīng)常遇到的“==”和“equals()”問題。 下面我們將通過不同的例子來解釋:

例子1:

String a = "Hello World!";  
String b = "Hello World!";  
String c = new String("Hello World!");  
String d = "Hello"+" "+"World!";
System.out.println(a == b);//true
System.out.println(a == c);//false
System.out.println(a == d);//true

我們應(yīng)該明白:

  • 首先String不屬于8種基本數(shù)據(jù)類型,String是一個對象。 因為對象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。
  • 在這里,我們先不談堆,也不談棧,只先簡單引入常量池這個簡單的概念。 常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數(shù)據(jù)。它包括了關(guān)于類、方法、接口等中的常量,也包括字符串常量。
  • Java會確保一個字符串常量只有一個拷貝。 因為例子中的a和b都是字符串常量,它們在編譯期就被確定了,所以 a==b為true;而"Hello"和" "以及"World!"也都是字符串常量,當(dāng)一個字符串由多個字符串常量連接而成時,它自己肯定也是字符串常量,所以d也同樣在編譯期就被解析為一個字符串常量,所以d也是常量池中"Hello World!"的一個引用。所以我們得出a==b==d; 用new String() 創(chuàng)建的字符串不是常量,不能在編譯期就確定,所以new String()創(chuàng)建的字符串不放入常量池中,它們有自己的地址空間。

例子2:

String a = "HelloWorld";    
String b = new String("HelloWorld");    
String c = "Hello"+ new String("World");    
System.out.println( a == b );//false
System.out.println( a == c );//false
System.out.println( b == c );//false

例子2中a還是常量池中”HelloWorld”的引用,b因為無法在編譯期確定,所以是運行時創(chuàng)建的新對象”HelloWorld”的引用,c因為有后半部分new String(“World”)所以也無法在編譯期確定,所以也是一個新創(chuàng)建對象”HelloWorld”的引用,明白了這些也就知道為何得出此結(jié)果了。 **PS: ** String.intern(): 再補充介紹一點:存在于.class文件中的常量池,在運行期被JVM裝載,并且可以擴(kuò)充。String的intern()方法就是擴(kuò)充常量池的一個方法;當(dāng)一個String實例str調(diào)用intern()方法時,Java查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等于str的字符串并返回它的引用,看例3就清楚了。

例子3:

String a = "Hello";    
String b = new String("Hello");    
String c = new String("Hello");    
System.out.println( a == b );//false
System.out.println( “**********” );    
b.intern();   
c = c.intern(); //把常量池中"Hello"的引用賦給c    
System.out.println( a == b);//false雖然執(zhí)行了b.intern()但沒有賦值給b
System.out.println( a == b.intern() );//true  
System.out.println( a == c ); //true  

例子4:
關(guān)于equals()和==: equals()是比較兩個對象的值是否相等,這個對于String簡單來說就是比較兩字符串的Unicode序列是否相當(dāng),如果相等返回true;而==是比較兩字符串的地址是否相同,也就是是否是同一個字符串的引用。

例子5:
String是不可變的 : 這一說又要說很多,大家只要知道String的實例一旦生成就不會再改變了,比如說: String str=”aa”+”bb”+” “+”cc”; 就是有4個字符串常量,首先”aa”和”bb”生成了”aabb”存在內(nèi)存中,后”aabb”又和” “ 生成 ”aabb “存在內(nèi)存中,最后又和生成了”aabb cc”,并把這個字符串的地址賦給了str,就是因為String的“不可變”產(chǎn)生了很多臨時變量,這也就是為什么建議用StringBuffer的原因了。

三、StringBuffer和StringBuiler

我們對String、StringBuffer、StringBuiler先有一個簡單的認(rèn)識。String是不可變字符串,StringBuffer和StringBuilder是長度可變的字符串,區(qū)別是前者是線程安全的,后者是線程不安全的,同樣后者的效率也會更高。

StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的數(shù)據(jù)。每個方法都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區(qū)中。append 方法始終將這些字符添加到緩沖區(qū)的末端;而 insert 方法則在指定的點添加字符。

例如,如果 z 引用一個當(dāng)前內(nèi)容為 "start" 的字符串緩沖區(qū)對象,則此方法調(diào)用 z.append("le") 會使字符串緩沖區(qū)包含 "startle",而 z.insert(4, "le") 將更改字符串緩沖區(qū),使之包含 "starlet"。

通常,如果 sb 引用 StringBuilder 的一個實例,則 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。

還有delete刪除方法 deleteCharAt(int index) delete(int start ,int end)

以上就是java.lang.String類的使用的詳細(xì)內(nèi)容,更多關(guān)于java.lang.String的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中for和forEach的速度比較實例Demo

    java中for和forEach的速度比較實例Demo

    for循環(huán)中的循環(huán)條件中的變量只求一次值,而foreach語句是java5新增,在遍歷數(shù)組、集合的時候,foreach擁有不錯的性能,這篇文章主要給大家介紹了關(guān)于java中for和forEach速度比較的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • SpringBoot基于Disruptor實現(xiàn)高效的消息隊列?

    SpringBoot基于Disruptor實現(xiàn)高效的消息隊列?

    Disruptor是一個開源的Java框架,它被設(shè)計用于在生產(chǎn)者-消費者問題上獲得盡量高的吞吐量和盡量低的延遲,本文主要介紹了SpringBoot基于Disruptor實現(xiàn)高效的消息隊列?,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • springboot+idea+maven 多模塊項目搭建的詳細(xì)過程(連接數(shù)據(jù)庫進(jìn)行測試)

    springboot+idea+maven 多模塊項目搭建的詳細(xì)過程(連接數(shù)據(jù)庫進(jìn)行測試)

    這篇文章主要介紹了springboot+idea+maven 多模塊項目搭建的詳細(xì)過程(連接數(shù)據(jù)庫進(jìn)行測試),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 詳解SpringCloud的負(fù)載均衡

    詳解SpringCloud的負(fù)載均衡

    這篇文章主要介紹了SpringCloud的負(fù)載均衡的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下
    2021-03-03
  • springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題

    springmvc使用REST出現(xiàn):Request?method?'PUT'?not?sup

    這篇文章主要介紹了springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot詳細(xì)列舉常用注解的說明

    SpringBoot詳細(xì)列舉常用注解的說明

    在開發(fā)SpringBoot程序的過程中,有可能與其他業(yè)務(wù)系統(tǒng)進(jìn)行對接開發(fā),獲取封裝公共的API接口等等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot常見的注解的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Spring?AOPr如何打通兩個切面之間的通信

    Spring?AOPr如何打通兩個切面之間的通信

    本文主要介紹了Spring?AOPr如何打通兩個切面之間的通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Java?HttpURLConnection使用方法與實例演示分析

    Java?HttpURLConnection使用方法與實例演示分析

    這篇文章主要介紹了Java?HttpURLConnection使用方法與實例演示,HttpURLConnection一個抽象類是標(biāo)準(zhǔn)的JAVA接口,該類位于java.net包中,它提供了基本的URL請求,響應(yīng)等功能,下面我們來深入看看
    2023-10-10
  • 使用Java計算屏幕的PPI的方法詳解

    使用Java計算屏幕的PPI的方法詳解

    在現(xiàn)代電子設(shè)備中,屏幕的分辨率和顯示效果是用戶非常關(guān)注的一個指標(biāo),PPI(Pixels Per Inch,每英寸像素數(shù))是衡量屏幕顯示精度的重要參數(shù)之一,PPI越高,屏幕顯示的圖像越細(xì)膩,視覺效果越好,本文將詳細(xì)介紹PPI的概念、計算方法,并通過Java代碼實現(xiàn)PPI的計算
    2025-02-02
  • Java實現(xiàn)求數(shù)組最長子序列算法示例

    Java實現(xiàn)求數(shù)組最長子序列算法示例

    這篇文章主要介紹了Java實現(xiàn)求數(shù)組最長子序列算法,涉及java針對數(shù)組的遞歸遍歷、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07

最新評論

泊头市| 吉林省| 昌吉市| 十堰市| 玉田县| 余姚市| 丰原市| 芦山县| 怀来县| 棋牌| 饶平县| 临漳县| 新建县| 贵德县| 锦州市| 玉山县| 岐山县| 大埔区| 嘉义县| 湖北省| 滁州市| 南安市| 改则县| 山阴县| 高碑店市| 赤峰市| 大厂| 大方县| 隆昌县| 长白| 九龙县| 济源市| 海城市| 洛扎县| 博白县| 东阿县| 正蓝旗| 花莲市| 长宁区| 三亚市| 巩留县|