亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的字符串用法小結(jié)

 更新時間:2015年04月16日 15:13:18   作者:司青  
這篇文章主要介紹了Java中的字符串用法,實(shí)例總結(jié)了java中關(guān)于字符串操作的各種常用的技巧,非常具有實(shí)用價值,需要的朋友可以參考下

本文實(shí)例總結(jié)了Java中的字符串用法。分享給大家供大家參考。具體分析如下:

字符串的本質(zhì)是char類型的數(shù)組,但在java中,所有用雙引號""聲明的字符串都是一個String類的對象。這也正體現(xiàn)了Java完全面向?qū)ο蟮恼Z言特點(diǎn)。

String 類

1、String類對象表示的是一個常量字符串。它是不可變長度的。也就是說,一旦創(chuàng)建了一個String類的實(shí)例,那么這個實(shí)例所表示的串是不可改變的。類似于

str = str + "Hello";

這樣的操作,實(shí)質(zhì)上是將 str 和 "Hello" 這兩個String對象合起來創(chuàng)建了一個新的String對象,然后將新String對象的引用賦給了str。大量使用這種操作,就會造成性能上的缺陷。如果需要經(jīng)常改變字符串的內(nèi)容,應(yīng)該使用StringBuffer類或StringBuilder類。我們可以用一段小程序來看看 String 和 StringBuffer類的性能差異到底有多大。

class StringTest 
{ 
 public static void main(String[] args) 
 { 
  /** 
  * 分別用String 對象和 StringBuffer 對象執(zhí)行10,000次追加操作
  * 測試執(zhí)行時間 
  * 2013.3.18 
  */ 
  String constStr = ""; 
  long lTime = System.currentTimeMillis(); 
  for(int i = 0 ; i < 10000 ; ++i) 
   constStr += i; 
  System.out.println("Const String:"+(System.currentTimeMillis()-lTime));
  StringBuilder strBuf = new StringBuilder("");
  lTime = System.currentTimeMillis(); 
  for(int i = 0 ; i < 10000 ; ++i) 
   strBuf.append(String.valueOf(i)); 
  System.out.println("Buffered String:"+(System.currentTimeMillis()-lTime));
 } 
}

執(zhí)行結(jié)果:

可以看到,StringBuilder秒過,而String類卻要用300ms的時間,可見性能差異之巨大。

StringBuilder 和 StringBuffered都表示一個可變長度(mutable)的字符串對象,它們之間的區(qū)別在于,StringBuffered類會在線程同步方面做一些安全性處理,而StringBuilder則反之。所以如果只是在單線編程的話,StringBuilder要比StringBuffered效率稍高一些(其實(shí)區(qū)別也并不大)

2、"Hello World" 是一個String對象
我們可以直接把"Hello World"當(dāng)作一個對象來使用,如:

if("Hello".equals("Hello")) 
   System.out.println("Yes");

輸出結(jié)果為Yes.

3、字符串對象比較要用equals()方法,而不能單純地使用 == 來判斷。因?yàn)?== 比較的是兩個引用名稱所引用的實(shí)例是否相同,equals()方法則比較的是兩個對象中的字符串是否相等。

一個常見的問題是,下面的代碼片斷一共產(chǎn)生了幾個String對象?

String str1 = new String("Hello");
String str2 = new String("Hello");

可能多數(shù)人會回答,2個。但事實(shí)上這里一共產(chǎn)生了3個String對象。除了str1 和str2,別忘了"Hello"也是一個String對象哦。

4、String池(Pool)

Java執(zhí)行時會維護(hù)一個String池。當(dāng)出現(xiàn)一個由雙引號聲明的字符串時,JVM會首先核查在內(nèi)存中是否存在相同的String對象(字符相同),如果存在,則返回內(nèi)存中已經(jīng)存在的對象的引用 ,如果不存在才會創(chuàng)建一個新的String對象。這樣可以節(jié)約內(nèi)存。如下面一段代碼,str1和str2實(shí)際上是指向的同一個String對象.

String str1 = "Hello";
String str2 = "Hello";

5、接收命令行參數(shù)

我們在聲明main方法時,會聲明一個String[] 類型的形參。這個String對象的數(shù)組就保存了用戶在執(zhí)行這個程序的時候所傳遞進(jìn)來的命令行參數(shù)。注意,與C語言不同的是,Java里的命令行參數(shù)是從程序名稱后第一個變量開始的。也就是說,String[]數(shù)據(jù)并不包括應(yīng)用程序名。例如:

class strCmd 
{ 
 public static void main(String[] args)
 { 
  if(args.length > 0) 
  { 
   for(String str : args) 
    System.out.println(str);
  } 
 } 
}

執(zhí)行 java strCmd Hello World!時的輸出結(jié)果為:

6、字符串的分離

類似于C語言中的strtok,String類也有一個split的方法可以以指定的格式分離一個字符串。split方法返回一個String對象的數(shù)組,表示分離出的每一段字符串。如:

class strSplit 
{ 
 public static void main(String[] args)
 { 
  String str = "Hello\tWorld\tI\tLove\tYou!"; 
  System.out.println("Original String : " + str);
   
  String[] strArr = str.split("\t");
  for(String s : strArr)
   System.out.println(s);
 } 
}

其中,split()方法的參數(shù)可以是正則表達(dá)式。可以使用java.util包中的Matcher類的靜態(tài)方法matches()來判斷一個字符串是否符合正則表達(dá)式

String類還有更多其它強(qiáng)大的功能,我們應(yīng)該學(xué)會閱讀API文檔。在這里就體現(xiàn)了英語的重要性了、、

希望本文所述對大家的java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Spring boot 打jar包分離lib的正確配置方式

    Spring boot 打jar包分離lib的正確配置方式

    spring boot打jar包分離lib后,配置文件的方式,在網(wǎng)上可以搜到很多答案,但是都不夠完善,今天小編給大家?guī)砹薙pring boot 打jar包分離lib的正確配置方式,感興趣的朋友一起看看吧
    2018-02-02
  • 詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    這篇文章主要介紹了詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • RocketMQ源碼分析之Broker過期消息清理機(jī)制

    RocketMQ源碼分析之Broker過期消息清理機(jī)制

    這篇文章主要為大家介紹了RocketMQ源碼分析之Broker過期消息清理機(jī)制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 詳解Java如何實(shí)現(xiàn)一個優(yōu)秀的散列表

    詳解Java如何實(shí)現(xiàn)一個優(yōu)秀的散列表

    這篇文章主要通過簡單的示例為大家詳細(xì)介紹了在Java中如何實(shí)現(xiàn)一個優(yōu)秀的散列表,文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以了解一下
    2023-07-07
  • 簡單聊一聊Spring中Bean別名的處理原理

    簡單聊一聊Spring中Bean別名的處理原理

    今天來和小伙伴們聊一聊 Spring 中關(guān)于 Bean 別名的處理邏輯,別名,顧名思義就是給一個 Bean 去兩個甚至多個名字,整體上來說,在 Spring 中,有兩種不同的別名定義方式,感興趣的小伙伴跟著小編一起來看看吧
    2023-09-09
  • SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能

    SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能

    這篇文章主要介紹了SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java Files和Paths的使用demo詳解

    Java Files和Paths的使用demo詳解

    Java Files和Paths是Java 7中引入的新API,用于處理文件和目錄,F(xiàn)iles類提供了許多有用的靜態(tài)方法來操作文件和目錄,而Path類則表示文件系統(tǒng)中的路徑,這篇文章主要介紹了Java Files和Paths的使用詳解,需要的朋友可以參考下
    2023-03-03
  • java并發(fā)請求下數(shù)據(jù)插入重復(fù)問題的解決方法

    java并發(fā)請求下數(shù)據(jù)插入重復(fù)問題的解決方法

    現(xiàn)在遇到一個項(xiàng)目,移動設(shè)備存儲數(shù)據(jù),然后一起上傳,那就出現(xiàn)了許多重復(fù)數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于java并發(fā)請求下數(shù)據(jù)插入重復(fù)問題的解決方法,需要的朋友可以參考下
    2021-11-11
  • java基于控制臺的學(xué)生學(xué)籍管理系統(tǒng)

    java基于控制臺的學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java基于控制臺的學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解Java中LinkedHashMap

    詳解Java中LinkedHashMap

    本文主要介紹了Java中LinkedHashMap的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05

最新評論