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

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

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

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

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

String 類

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

str = str + "Hello";

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

class StringTest 
{ 
 public static void main(String[] args) 
 { 
  /** 
  * 分別用String 對(duì)象和 StringBuffer 對(duì)象執(zhí)行10,000次追加操作
  * 測(cè)試執(zhí)行時(shí)間 
  * 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秒過(guò),而String類卻要用300ms的時(shí)間,可見(jiàn)性能差異之巨大。

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

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

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

輸出結(jié)果為Yes.

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

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

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

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

4、String池(Pool)

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

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

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

我們?cè)诼暶鱩ain方法時(shí),會(huì)聲明一個(gè)String[] 類型的形參。這個(gè)String對(duì)象的數(shù)組就保存了用戶在執(zhí)行這個(gè)程序的時(shí)候所傳遞進(jìn)來(lái)的命令行參數(shù)。注意,與C語(yǔ)言不同的是,Java里的命令行參數(shù)是從程序名稱后第一個(gè)變量開(kāi)始的。也就是說(shuō),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!時(shí)的輸出結(jié)果為:

6、字符串的分離

類似于C語(yǔ)言中的strtok,String類也有一個(gè)split的方法可以以指定的格式分離一個(gè)字符串。split方法返回一個(gè)String對(duì)象的數(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á)式??梢允褂胘ava.util包中的Matcher類的靜態(tài)方法matches()來(lái)判斷一個(gè)字符串是否符合正則表達(dá)式

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

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

相關(guān)文章

  • Java泛型通配符的使用詳解

    Java泛型通配符的使用詳解

    本文主要介紹了Java泛型通配符的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • eclipse實(shí)現(xiàn)可認(rèn)證的DH密鑰交換協(xié)議

    eclipse實(shí)現(xiàn)可認(rèn)證的DH密鑰交換協(xié)議

    這篇文章主要介紹了eclipse實(shí)現(xiàn)可認(rèn)證的DH密鑰交換協(xié)議,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 淺談Java中的四種引用方式的區(qū)別

    淺談Java中的四種引用方式的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談Java中的四種引用方式的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解

    Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解

    這篇文章主要介紹了Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Java內(nèi)存模型原子性原理及實(shí)例解析

    Java內(nèi)存模型原子性原理及實(shí)例解析

    這篇文章主要介紹了Java內(nèi)存模型原子性原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

    spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

    今天通過(guò)本文給大家分享spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程,由于大多數(shù)都是springboot集成flyway,很少見(jiàn)到spring框架的項(xiàng)目,今天就抽空給大家介紹下spring框架集成flyway項(xiàng)目的方法,一起看看吧
    2021-07-07
  • ExpressionUtil工具類的應(yīng)用實(shí)例

    ExpressionUtil工具類的應(yīng)用實(shí)例

    這篇文章主要給大家介紹了關(guān)于ExpressionUtil工具類的應(yīng)用實(shí)例,常用的工具類有很多,這是其中一個(gè),了解基本的API可以幫助我們更好的開(kāi)發(fā),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Java并發(fā)編程中的volatile關(guān)鍵字詳解

    Java并發(fā)編程中的volatile關(guān)鍵字詳解

    這篇文章主要介紹了Java并發(fā)編程中的volatile關(guān)鍵字詳解,volatile?用于保證我們某個(gè)變量的可見(jiàn)性,使其一直存放在主存中,不被移動(dòng)到某個(gè)線程的私有工作內(nèi)存中,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合郵件發(fā)送的四種方法

    SpringBoot整合郵件發(fā)送的四種方法

    這篇文章主要介紹了SpringBoot整合郵件發(fā)送的四種方法,SpringBoot中集成了發(fā)送郵件的功能,本文做了進(jìn)一步優(yōu)化,需要的朋友可以參考下
    2023-03-03
  • Java如何實(shí)現(xiàn)通過(guò)證書(shū)訪問(wèn)Https請(qǐng)求

    Java如何實(shí)現(xiàn)通過(guò)證書(shū)訪問(wèn)Https請(qǐng)求

    這篇文章主要介紹了Java如何實(shí)現(xiàn)通過(guò)證書(shū)訪問(wèn)Https請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論

鄂尔多斯市| 无锡市| 淳安县| 土默特右旗| 南投县| 巴林左旗| 宿松县| 大新县| 奉新县| 兰州市| 渭南市| 即墨市| 通化市| 巴东县| 海伦市| 壤塘县| 桦南县| 冷水江市| 丹东市| 鄂托克旗| 堆龙德庆县| 得荣县| 嘉峪关市| 黄冈市| 成安县| 鄂尔多斯市| 霍邱县| 新乡市| 滁州市| 扬中市| 洛宁县| 松潘县| 桑植县| 大竹县| 雷波县| 资兴市| 全南县| 广东省| 班戈县| 陇南市| 斗六市|