国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - JAVA教程 - Java中的字符串用法小結

Java中的字符串用法小結

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

這篇文章主要介紹了Java中的字符串用法,實例總結了java中關于字符串操作的各種常用的技巧,非常具有實用價值,需要的朋友可以參考下

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

字符串的本質是char類型的數組,但在java中,所有用雙引號""聲明的字符串都是一個String類的對象。這也正體現(xiàn)了Java完全面向對象的語言特點。

String 類

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

?
1
str = str + "Hello";

這樣的操作,實質上是將 str 和 "Hello" 這兩個String對象合起來創(chuàng)建了一個新的String對象,然后將新String對象的引用賦給了str。大量使用這種操作,就會造成性能上的缺陷。如果需要經常改變字符串的內容,應該使用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 對象和 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í)行結果:

Java中的字符串用法小結

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

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

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

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

輸出結果為Yes.

Java中的字符串用法小結

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

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

?
1
2
String str1 = new String("Hello");
String str2 = new String("Hello");

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

4、String池(Pool)

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

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

5、接收命令行參數

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

?
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!時的輸出結果為:

Java中的字符串用法小結

6、字符串的分離

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

?
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中的字符串用法小結

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

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

希望本文所述對大家的java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美在线综合 | 亚洲国产婷婷香蕉久久久久久99 | 亚洲一区二区免费看 | 99久久婷婷国产精品综合 | 一级视频在线播放 | 久久国产精品久久久久久电车 | 色视频在线免费观看 | 欧美一区二区 | 欧美成人精精品一区二区频 | 久久久精品国产亚洲 | 91久久精品日日躁夜夜躁国产 | 四虎影院最新地址 | av在线电影观看 | 寡妇激情毛片免费视频 | 美女视频一区二区三区 | 中文字幕一区在线观看视频 | 国产四区 | 久久精品亚洲精品 | 免费av观看| 黄免费| 欧美一区二区三 | 97理论片| 成人欧美一区二区三区白人 | 久久黄色网 | 日韩亚洲一区二区 | 不卡一区二区三区四区 | 中文字幕在线不卡 | 一本大道av伊人久久综合 | 亚洲福利在线播放 | 亚洲精品乱码久久久久久金桔影视 | 亚洲免费在线播放 | 午夜四虎 | 色视频在线免费观看 | 久久久婷婷 | 亚洲一区二区免费看 | 欧美一级黄色片 | 亚洲视频观看 | 国产精品欧美一区二区三区不卡 | h视频在线免费观看 | 黄在线观看 | 成人午夜在线 |