欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java.lang.String類的使用

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

一、String的用法

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

 java.lang.String  
 char charAt (int index)     返回index所指定的字符 
 String concat(String str)   將兩字符串連接 
 boolean endsWith(String str)    測(cè)試字符串是否以str結(jié)尾 
 boolean equals(Object obj)  比較兩對(duì)象 
 char[] getBytes     將字符串轉(zhuǎn)換成字符數(shù)組返回 
 char[] getBytes(String str)     將指定的字符串轉(zhuǎn)成制服數(shù)組返回 
 boolean startsWith(String str)  測(cè)試字符串是否以str開(kāi)始 
 int length()    返回字符串的長(zhǎng)度 
 String replace(char old ,char new)  將old用new替代 
 char[] toCharArray  將字符串轉(zhuǎn)換成字符數(shù)組 
 String toLowerCase()    將字符串內(nèi)的字符改寫(xiě)成小寫(xiě) 
 String toUpperCase()    將字符串內(nèi)的字符改寫(xiě)成大寫(xiě) 
 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)  將長(zhǎng)整數(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.求字符串長(zhǎng)度和某一位置字符

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)前字符串中取出剩余的字符作為一個(gè)新的字符串返回。 2)public String substring(int beginIndex, int endIndex)//該方法從beginIndex位置起,從當(dāng)前字符串中取出到endIndex-1位置的字符作為一個(gè)新的字符串返回。

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)//該方法是對(duì)字符串內(nèi)容按字典順序進(jìn)行大小比較,通過(guò)返回的整數(shù)值指明當(dāng)前字符串與參數(shù)字符串的大小關(guān)系。若當(dāng)前對(duì)象比參數(shù)大則返回正整數(shù),反之返回負(fù)整數(shù),相等返回0。

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

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

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

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)前字符串的后面,效果等價(jià)于"+"

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

6.字符串中單個(gè)字符查找

1)public int indexOf(int ch/String str)//用于查找當(dāng)前字符串中字符或子串,返回字符或子串在當(dāng)前字符串中從左邊起首次出現(xiàn)的位置,若沒(méi)有出現(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.大小寫(xiě)轉(zhuǎn)換

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

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

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字符,并返回一個(gè)新的字符串。

2)public String replaceFirst(String regex, String replacement)//該方法用字符replacement的內(nèi)容替換當(dāng)前字符串中遇到的第一個(gè)和字符串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()//截去字符串兩端的空格,但對(duì)于中間的空格不處理。

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)//用來(lái)比較當(dāng)前字符串的起始字符或子字符串prefix和終止字符或子字符串suffix是否和當(dāng)前字符串相同,重載方法中同時(shí)還可以指定比較的開(kāi)始位置offset。

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

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

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()”問(wèn)題。 下面我們將通過(guò)不同的例子來(lái)解釋:

例子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是一個(gè)對(duì)象。 因?yàn)閷?duì)象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對(duì)象,有其它對(duì)象沒(méi)有的一些特性。
  • 在這里,我們先不談堆,也不談棧,只先簡(jiǎn)單引入常量池這個(gè)簡(jiǎn)單的概念。 常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數(shù)據(jù)。它包括了關(guān)于類、方法、接口等中的常量,也包括字符串常量。
  • Java會(huì)確保一個(gè)字符串常量只有一個(gè)拷貝。 因?yàn)槔又械腶和b都是字符串常量,它們?cè)诰幾g期就被確定了,所以 a==b為true;而"Hello"和" "以及"World!"也都是字符串常量,當(dāng)一個(gè)字符串由多個(gè)字符串常量連接而成時(shí),它自己肯定也是字符串常量,所以d也同樣在編譯期就被解析為一個(gè)字符串常量,所以d也是常量池中"Hello World!"的一個(gè)引用。所以我們得出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因?yàn)闊o(wú)法在編譯期確定,所以是運(yùn)行時(shí)創(chuàng)建的新對(duì)象”HelloWorld”的引用,c因?yàn)橛泻蟀氩糠謓ew String(“World”)所以也無(wú)法在編譯期確定,所以也是一個(gè)新創(chuàng)建對(duì)象”HelloWorld”的引用,明白了這些也就知道為何得出此結(jié)果了。 **PS: ** String.intern(): 再補(bǔ)充介紹一點(diǎn):存在于.class文件中的常量池,在運(yùn)行期被JVM裝載,并且可以擴(kuò)充。String的intern()方法就是擴(kuò)充常量池的一個(gè)方法;當(dāng)一個(gè)String實(shí)例str調(diào)用intern()方法時(shí),Java查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒(méi)有,則在常量池中增加一個(gè)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()但沒(méi)有賦值給b
System.out.println( a == b.intern() );//true  
System.out.println( a == c ); //true  

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

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

三、StringBuffer和StringBuiler

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

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

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

通常,如果 sb 引用 StringBuilder 的一個(gè)實(shí)例,則 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的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java SpringSecurity入門案例與基本原理詳解

    Java SpringSecurity入門案例與基本原理詳解

    這篇文章主要介紹了java中Spring Security的實(shí)例詳解的相關(guān)資料,spring security是一個(gè)多方面的安全認(rèn)證框架,提供了基于JavaEE規(guī)范的完整的安全認(rèn)證解決方案,需要的朋友可以參考下
    2021-09-09
  • Java中正則表達(dá)式的使用和詳解(上)

    Java中正則表達(dá)式的使用和詳解(上)

    這篇文章主要介紹了Java中正則表達(dá)式的使用和詳解,包括匹配驗(yàn)證驗(yàn)證email是否正確,在字符串中查詢字符或者字符串的代碼實(shí)例,需要的朋友可以參考下
    2017-04-04
  • Spring加載properties文件的兩種方式實(shí)例詳解

    Spring加載properties文件的兩種方式實(shí)例詳解

    這篇文章主要介紹了Spring加載properties文件的兩種方式,需要的朋友可以參考下
    2018-02-02
  • Java 數(shù)組詳解及示例代碼

    Java 數(shù)組詳解及示例代碼

    本文主要介紹Java 數(shù)組的知識(shí),這里整理了數(shù)組所有操作方法,并一一列舉,有學(xué)習(xí)的朋友可以參考下
    2016-09-09
  • Java面試突擊之Bean作用域詳解

    Java面試突擊之Bean作用域詳解

    Spring?框架作為一個(gè)管理?Bean?的?IoC?容器,那么?Bean?自然是?Spring?中的重要資源了,那?Bean?的作用域是什么意思?又有幾種類型呢?接下來(lái)我們一起來(lái)看
    2022-08-08
  • mybatis plus 開(kāi)啟sql日志打印的方法小結(jié)

    mybatis plus 開(kāi)啟sql日志打印的方法小結(jié)

    Mybatis-Plus(簡(jiǎn)稱MP)是一個(gè) Mybatis 的增強(qiáng)工具,在 Mybatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生。本文重點(diǎn)給大家介紹mybatis plus 開(kāi)啟sql日志打印的方法小結(jié),感興趣的朋友一起看看吧
    2021-09-09
  • 詳解Java線程池和Executor原理的分析

    詳解Java線程池和Executor原理的分析

    這篇文章主要介紹了詳解Java線程池和Executor原理的分析的相關(guān)資料,這里提供實(shí)例及分析原理幫助大家理解這部分知識(shí),需要的朋友可以參考下
    2017-07-07
  • Java8新特性詳解與實(shí)戰(zhàn)分享

    Java8新特性詳解與實(shí)戰(zhàn)分享

    Java 8作為Java語(yǔ)言的一個(gè)重要更新,引入了一系列新特性,這些特性不僅提高了代碼的可讀性和可維護(hù)性,還增強(qiáng)了程序的性能,本文將詳細(xì)介紹Java 8中的幾個(gè)關(guān)鍵使用技巧,并通過(guò)代碼案例來(lái)展示它們的應(yīng)用,需要的朋友可以參考下
    2024-06-06
  • 淺析Spring的事務(wù)實(shí)現(xiàn)原理

    淺析Spring的事務(wù)實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)介紹了Spring中事務(wù)實(shí)現(xiàn)的原理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的可以參考一下
    2022-11-11
  • dubbo服務(wù)引用之創(chuàng)建Invoker流程詳解

    dubbo服務(wù)引用之創(chuàng)建Invoker流程詳解

    這篇文章主要為大家介紹了dubbo服務(wù)引用二之創(chuàng)建Invoker流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論