宣告, 實例, 初始化物件
物件藉由參考來存取, 是由類別實例出來的, 裏面包含著屬性及方法
物件參考
宣告 : 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