国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java的字符串操作

2019-11-18 11:52:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  正如前面提到的,String 是一個(gè)系統(tǒng)定義的類——不是原始類型——它在所有的 java(TM) 發(fā)行版中都包括了的輔助核心包 java.lang 中定義。包lang是一個(gè)非常基本的包,程序員不需要任何步驟就可以直接使用它的類。快速查閱 java.lang.String ,將會(huì)發(fā)現(xiàn)有關(guān)字符串處理的方法非常之多。
  lang 包中還提供了一個(gè)補(bǔ)充類 java.lang.StringBuffer 。String 的實(shí)例創(chuàng)建后是不可改變的,也就是說(shuō),它們不能被修改。用一個(gè)等價(jià)的術(shù)語(yǔ)說(shuō),String 操作是 無(wú)損的。程序員只能簡(jiǎn)單的創(chuàng)建字符串,使用它,當(dāng)不再需要引用到它時(shí),Java 解釋器的垃圾回收工具(Garbage collection) 就會(huì)收回其占用的存儲(chǔ)空間。對(duì)于一般編程來(lái)說(shuō),大部分面向字符串的任務(wù)只需要用 String 的實(shí)例就可以實(shí)現(xiàn)(并且非常有效)。例如,創(chuàng)建字符串常量,聯(lián)接字符串,等等。
  StringBuffer則功能更強(qiáng)一些,它包括很多分解字符串的方法,例如,求子串和在一個(gè)字符串中間位置插入一個(gè)或多個(gè)字符這種在字符級(jí)別上的操作。一個(gè)好的原則是在任何可能的地方都使用String,僅僅當(dāng)用 String 不能完成相應(yīng)的功能時(shí)才考慮用StringBuffer。
  在前面,我們?cè)劦揭粋€(gè)很常用的跟字符串有關(guān)的輸出操作:
  System.out.  因此,在以前的例子中,我們有如下代碼:
  int x = 4;
  x++; // same effect as ++x
  System.out.println("x = " + x);
  產(chǎn)生輸出結(jié)果為:
   x = 5
  注重,這種自動(dòng)類型轉(zhuǎn)換和聯(lián)接并不只是在作為 println() 這種方法的參數(shù)時(shí)才可使用,在其他任何地方都可以使用。這個(gè)特征非常方便有用,再一次展現(xiàn)了 Java 語(yǔ)法的強(qiáng)大:
  
  String waterCoolerGreeting;
  if (employee.getAge() > 40) {
   waterCoolerGreeting =
   employee.getFirstName() +
   "! Wow, what's it like to be " +
   employee.getAge() + "?";
  }
  else
   waterCoolerGreeting =
   "Hi, " + employee.getFirstName() + "!"
  另一問(wèn)題是雙引號(hào)(" ")界定的字符序列如 "x = " 的直接使用。由于 String 是一個(gè)類,創(chuàng)建它的實(shí)例通常采用的方法應(yīng)是:
  String prompt = new String("x = ");
  注重為了創(chuàng)建一個(gè)字符串的實(shí)例我們必須提供一個(gè)字符串!為了編程方便,Java 將雙引號(hào)(" ")引起來(lái)的字符序列當(dāng)作是一個(gè)字符串;因此,我們可以用下面的快捷形式來(lái)創(chuàng)建一個(gè) String 的實(shí)例,并賦值給引用變量 prompt:
  String prompt = "x = ";
  String barkSound = "Woof.";
  有關(guān)字符串的最后一個(gè)問(wèn)題:不管是一個(gè)對(duì)象還是整型等其他原始類型的數(shù)據(jù)都可自動(dòng)轉(zhuǎn)換為一個(gè) String 的實(shí)例。到底怎么轉(zhuǎn)換呢?Java 中所有的類都是最普通的類 java.lang.Object 的一個(gè)特定(即子類),其隱含意思就是所有的類都自動(dòng)繼續(xù) toString() 方法。(有關(guān)類的繼續(xù)的內(nèi)容超出了本教程的范圍,但是此內(nèi)容相當(dāng)有趣并且非常有用。) 在對(duì)象自動(dòng)轉(zhuǎn)換為字符串的過(guò)程中,Java 編譯器調(diào)用對(duì)象的 toString() 方法來(lái)完成該指定對(duì)象的轉(zhuǎn)換。
  直接從 Object 繼續(xù)的 toString() 方法沒(méi)有多大意義--實(shí)際上它只是一個(gè)占位符而已。對(duì)于我們?cè)O(shè)計(jì)的每一個(gè)類 ,我們都可以(而且應(yīng)該)提供一個(gè)簡(jiǎn)單的 toString() 方法來(lái)將實(shí)例的有關(guān)信息聯(lián)接起來(lái)。在類中提供 toString() 方法的價(jià)值是顯而易見(jiàn)的,因?yàn)樵谡{(diào)試操作中它將發(fā)揮很大的作用。
  假設(shè)在 Dog 中存在另外幾個(gè)實(shí)例變量及相應(yīng)的存取方法來(lái)區(qū)分不同的狗,我們可以定義一個(gè) toString() 方法用來(lái)收集描述 Dog 的實(shí)例的信息:
   class Dog {
   String barkSound = "Woof.";
   String name = "none";
   String breed = "unknown";
   boolean gentle = true;
   boolean obedienceTrained = false;
   int age = 0;
   ...
   public String toString() {
   return "[name = " + name + "] " +
   "[breed = " + breed + "] " +
   "[age = " + age + "] ";
   }
   ...
  測(cè)試程序 TestDogToString 在輸出語(yǔ)句中直接使用了 Dog 的實(shí)例:
  
   public class TestDogToString {
   public static void main(String[] args) {
   Dog bruno = new Dog();
   bruno.setBark("RRUUFFFF.");
   bruno.setName("Bruno");
   bruno.setBreed("Newfoundland");
   bruno.setAge(14);
   bruno.bark();
   System.out.println(bruno); // automatic conversion
   }
  }
  運(yùn)行該程序?qū)⑤敵觯?
  RRUUFFFF.
  [name = Bruno] [breed = Newfoundland] [age = 14]
  現(xiàn)在,請(qǐng)注重 toString() 方法應(yīng)該用 public 修飾符。 Java 是一門功能強(qiáng)大的語(yǔ)言,其很多特征如繼續(xù)、數(shù)據(jù)和存取方法等等會(huì)在別處論及。盡管還有一些問(wèn)題沒(méi)有提及,方法 toString() 的功能確實(shí)非常方便。在每一個(gè)用戶定義數(shù)據(jù)類型中都包含進(jìn) toString() 方法,這真一個(gè)好主意!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 于都县| 黑河市| 黔东| 四子王旗| 灵石县| 垫江县| 蛟河市| 呼伦贝尔市| 偃师市| 措勤县| 田阳县| 梧州市| 西峡县| 金堂县| 毕节市| 天峨县| 建宁县| 清流县| 开阳县| 南靖县| 静海县| 北票市| 盐亭县| 鄢陵县| 家居| 闵行区| 郴州市| 桂林市| 清涧县| 紫云| 三原县| 朝阳区| 历史| 房山区| 唐河县| 炉霍县| 涞水县| 莱阳市| 竹溪县| 咸丰县| 凌云县|