一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java中的字符串用法小結(jié)

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

2019-12-16 13:26司青 JAVA教程

這篇文章主要介紹了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言特點(diǎn)。

String 類

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

?
1
str = str + "Hello";

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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é)果:

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

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

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

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

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

輸出結(jié)果為Yes.

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

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

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

?
1
2
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ì)象.

?
1
2
String str1 = "Hello";
String str2 = "Hello";

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

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

?
1
2
3
4
5
6
7
8
9
10
11
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é)果為:

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

6、字符串的分離

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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);
 }
}

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩高清一区二区 | 日日免费视频 | 免费观看成年人视频 | avove本人照片 | 亚偷熟乱区视频在线观看 | 免费观看欧美性一级 | 日本b站一卡二不卡三卡四卡 | 国产欧美日韩专区 | 五月天婷婷精品免费视频 | 国产卡一卡二卡三乱码手机 | 97精品国产自在现线免费观看 | 国产精品制服丝袜白丝www | 九九艹| 非洲一级毛片又粗又长aaaa | 香蕉免费看一区二区三区 | 国产91精品区 | 日韩一二三 | 欧美在线视频一区在线观看 | 亚洲精品视频一区 | 亚洲欧美日韩另类在线一 | 欧美日韩一区二区三区免费不卡 | 四虎成人免费大片在线 | 国产欧美曰韩一区二区三区 | 嫩草影院永久在线播放 | 精品国产成人高清在线 | 石原莉奈被店长侵犯免费 | 亚洲天堂导航 | ai换脸杨幂被c在线观看 | 久久久久国产一级毛片高清片 | 羞羞色男人的天堂伊人久久 | 羲义嫁密着中出交尾gvg794 | 久久精品亚洲国产AV涩情 | 日本在线观看视频 | 久青草国产97香蕉在线视频 | 精品久久香蕉国产线看观看麻豆 | 3x免费高清视频 | 国产精品国产精品国产三级普 | 久久热国产在线视频 | 别停好爽好深好大好舒服视频 | 亚洲 欧美 日本 国产 高清 | 国产香蕉国产精品偷在线观看 |