String

      在〈String〉中尚無留言

宣告, 實例, 初始化物件

物件藉由參考來存取, 是由類別實例出來的, 裏面包含著屬性及方法

 物件參考

宣告 : Classname identifier;
實例化 : new Classname();
指定 : identifier=new Classname();

下面的例子為實際的應用

Shirt myShirt=new Shirt();
Int shirtId=myShirt.shirtId;
myShirt.display();

物件實例化之後, 若要存取裏面的欄位, 必需使用 . 運算子, 比如myShirt.shirtId;

切記 : 變數myShirt置於stack區, 產生的物件是置於heap區

myShirt=yourShirt; 此時myShirt之前所參考的物件會被垃圾回收機制移除

Shirt myShirt=new Shirt();
Shirt yourShirt=new Shirt();
myShirt=yourShirt;
myShirt.colorCode=’R’;
yourShirt.colorCode=’G’;
System.out.println(“Shirt color: “ + myShirt.colorCode);

印出的結果是G

使用String 類別

字串的宣告原為
String str1=new String(“hello”);
String str2=new String(“hello”);
此時若執行 str1==str2, 所得到的結果為false, 因為這是二個存放在heap區, 獨立不同的物件. 若要比對裏面的字串內容是否相等, 就要使用str1.equals(str2).

另外String亦提供了equalsIgnoreCase()的物件方法, 用來比對不分大小寫時的內容值是否一樣.

但自Java SE 1.4開始, 為了提升String的使用率及效能, 採用了非標準語法, 如下:
String str1=”java”;
String str2=”java”;

上述不需使用new 即可實例化字串. 但這作法跟原始的不一樣. 第一行的 “java”會放入字串池中(String pool), 然後第二行的str2再指向字串池的 “java” 物件, 所以str1==str2的結果是true, 代表著str1及str2是指向同一個物件

字串類別是類別函數庫眾多類別的其中之一. 使用new 建立字串物件時,會產生二個字串物件(一個在字串池,一個是真正的物件)。直接指定字串,則只建立一個位於字串池的物件

字串物件永久不變, 其值不可更改, 且可使用 + 連結二字串. 除了使用 + 之外, 也可以使用concat()方法, 都是直接產生出一個新的字串物件. 如下說明字串的運作
String name=”Thomas”;
name=name+”Wu”;
第一行會在字串池產生 “Thomas”, 第二行會在字串池產生 “Wu”, 及”ThomasWu” 二字串, 然後將name參考指向”ThomasWu”. 此時在字串池的 “Thomas” 還是維持原狀, 不會改變的

字串方法

方法的返回值,可以是原生型態資料,也可以是物件參考,但注意,不是傳回新的物件!! 而字串函數concat(), 是建立一個新的物件,然後傳回此新物件的參考。

length() : 傳回字串長度
trim() : 刪除前後之空格
toLowerCase() : 轉成小寫
substring(6) : 傳回第7個字以後的字串(編號從0開始)
endWith(“World”) : 結尾是否包含了 “World”, 傳回true or false

Java API documentation

http://docs.oracle.com/javase/7/docs/api/index.html 說明各個類別之建構子, 方法, 類別變數

System.out 方法

System.out.print() : 列印後,不換行
System.out.println() : 列印後會換行
System.out.printf() :  可加入格式化

另一種常用的格式設定如下方式
String str=String.format(format, args);
然後再把s由System.out.println(str)印出

StringBuilder 類別

可變更的字串, 會修改原物件, 使用new 實例化物件, 如
StringBuilder sb=new StringBuilder(“Hello”);

sb.append(” World”);此時sb會變成 “Hello World”
其他尚有 insert(), delete() 等方法

Which of the following statements are true?(Choose all that apply)
A. The dot(.) operator creates a new object instance.
B. The String class provides you with the ability to store a sequence of characters.
C. The Java API specification contains documentation for all of the classes in a Java technology product.
D. String types are unique because the are the only class that allows you to build objects without using the new keyword.

Answer : B,C,D

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *