java.lang
介面 Iterable<T>
實作這個介面允許物件成為 "foreach" 語句的目標。
Iterator<T> | iterator() 返回一個在一組 T 型別的元素上進行迭代的迭代器。 |
所以常用的Collection、List等,都有實作此介面。
詳細參考:
JAVA API
Iterable (Java Platform SE 6)
其它文章
本站Java鬥陣仔甘仔店為學徒程式開發教學學習,這裡有Java程式開發相關技術等學習交流。 主要提高開發程式效率同時分享一些開發程式經驗、深入探討開發程式體驗等技術和教學。 相關技術等學習交流語言(Languages)及框架工具(Software)/環境(Environment)/資料庫(Database)
Iterator<T> | iterator() 返回一個在一組 T 型別的元素上進行迭代的迭代器。 |
CloneNotSupportedException
- Cloneable
介面,則覆寫 clone
方法的子類別也會拋出此異常,以指示無法複製某個實例。
package com.test; public class TestClone implements Cloneable { public static final int i=1; @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } public static void main(String[] args) { try { TestClone t = new TestClone(); //使用clone TestClone t1 = (TestClone) t.clone(); //顯示記憶體位置 System.out.println(t); //com.test.TestClone@150bd4d System.out.println(t1); //com.test.TestClone@1bc4459 //位置是不一樣了,是不同的物件 //陣列會自動implements Cloneable //所以會有clone的功能 int i[] = {1,2,5,8,8,8}; int a[]=i.clone(); System.out.println(i.equals(a)); //false System.out.println(a[2]); //5 } catch (CloneNotSupportedException e) { e.printStackTrace(); } } }
package com.test; import java.util.ArrayList; public class TestCloneAdvanced implements Cloneable{ private int i; private ArrayList arrayList; @Override public String toString() { return "i=" + i + ",arrayList=" + arrayList; } public static void main(String[] args) { TestCloneAdvanced clone1 = new TestCloneAdvanced(); clone1.i = 3; clone1.arrayList = new ArrayList(); clone1.arrayList.add("value 1"); TestCloneAdvanced clone2 = null; try { clone2 = (TestCloneAdvanced) clone1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } System.out.println("複製物件後,顯示結果:"); System.out.println("clone1:" + clone1); System.out.println("clone2:" + clone2); System.out.println("將clone1改變值後,顯示結果:"); clone1.i = 5; clone1.arrayList.add("value 2"); System.out.println("clone1:" + clone1); System.out.println("clone2:" + clone2); System.out.println("將clone1改變值後,clone2的arrayList的值也會改"); System.out.println("因為arrayList物件沒有複製"); System.out.println("clone1.arrayList==clone2.arrayList?" + (clone1.arrayList == clone2.arrayList)); } }
package com.test; import java.util.ArrayList; public class TestCloneAdvanced1 implements Cloneable { private int i; private ArrayList arrayList; @Override public String toString() { return "i=" + i + ",arrayList=" + arrayList; } @Override public Object clone() throws CloneNotSupportedException { TestCloneAdvanced1 clone = (TestCloneAdvanced1) super.clone(); clone.arrayList = (ArrayList) this.arrayList.clone(); return clone; } public static void main(String[] args) { TestCloneAdvanced1 clone1 = new TestCloneAdvanced1(); clone1.i = 3; clone1.arrayList = new ArrayList(); clone1.arrayList.add("value 1"); TestCloneAdvanced1 clone2 = null; try { clone2 = (TestCloneAdvanced1) clone1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } System.out.println("複製物件後,顯示結果:"); System.out.println("clone1:" + clone1); System.out.println("clone2:" + clone2); System.out.println("將clone1改變值後,顯示結果:"); clone1.i = 5; clone1.arrayList.add("value 2"); System.out.println("clone1:" + clone1); System.out.println("clone2:" + clone2); System.out.println("將clone1改變值後,clone2的arrayList的值不會改了"); System.out.println("clone1.arrayList==clone2.arrayList?" + (clone1.arrayList == clone2.arrayList)); } }結果:
boolean | equals(Object obj) 指示其他某個物件是否與此物件「相等」。 |
String | toString() 返回該物件的字元串表示。 |
Object
類別的 toString
方法返回一個字元串,
該字元串由類別名(物件是該類別的一個實例)、
at 標記符“@
”和此物件雜湊碼的無符號十六進製表示組成。
換句話說,該方法返回一個字元串,它的值等於:
getClass().getName() + '@' + Integer.toHexString(hashCode())
protected Object | clone() 創建並返回此物件的一個副本。 |
protected void | finalize() 當垃圾回收器確定不存在對該物件的更多參考時,由物件的垃圾回收器調用此方法。 |
Class<?> | getClass() 返回此 Object 的運行時類別。 |
int | hashCode() 返回該物件的雜湊碼值。 |
void | notify() 喚醒在此物件監視器上等待的單個執行緒。 |
void | notifyAll() 喚醒在此物件監視器上等待的所有執行緒。 |
void | wait() 在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法前,導致當前執行緒等待。 |
void | wait(long timeout) 在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量前,導致當前執行緒等待。 |
void | wait(long timeout, int nanos) 在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法,或者其他某個執行緒中斷當前執行緒,或者已超過某個實際時間量前,導致當前執行緒等待。 |
int | length() 返回此字元串的長度。 |
String | trim() 返回字元串的副本,忽略前導空白和尾部空白。 |
int | hashCode() 返回此字元串的雜湊碼。 |
static String | copyValueOf(char[] data) 返回指定陣列中表示該字元序列的 String。 |
static String | copyValueOf(char[] data, int offset, int count) 返回指定陣列中表示該字元序列的 String。 |
static String | format(Locale l, String format, Object... args) 使用指定的語言環境、格式字元串和參數返回一個格式化字元串。 |
static String | format(String format, Object... args) 使用指定的格式字元串和參數返回一個格式化字元串。 |
修飾詞 回傳值 | 方法 說明 |
static String | valueOf(boolean b) 返回 boolean 參數的字元串表示形式。 |
static String | valueOf(char c) 返回 char 參數的字元串表示形式。 |
static String | valueOf(char[] data) 返回 char 陣列參數的字元串表示形式。 |
static String | valueOf(char[] data, int offset, int count) 返回 char 陣列參數的特定子陣列的字元串表示形式。 |
static String | valueOf(double d) 返回 double 參數的字元串表示形式。 |
static String | valueOf(float f) 返回 float 參數的字元串表示形式。 |
static String | valueOf(int i) 返回 int 參數的字元串表示形式。 |
static String | valueOf(long l) 返回 long 參數的字元串表示形式。 |
static String | valueOf(Object obj) 返回 Object 參數的字元串表示形式。 |
String | toLowerCase() 使用預設語言環境的規則將此 String 中的所有字元都轉換為小寫。 |
String | toLowerCase(Locale locale) 使用給定 Locale 的規則將此 String 中的所有字元都轉換為小寫。 |
String | toUpperCase() 使用預設語言環境的規則將此 String 中的所有字元都轉換為大寫。 |
String | toUpperCase(Locale locale) 使用給定 Locale 的規則將此 String 中的所有字元都轉換為大寫。 |
String | intern() 返回字元串物件的規範化表示形式。 |
String | toString() 返回此物件本身(它已經是一個字元串!)。 |
int | indexOf(int ch) 返回指定字元在此字元串中第一次出現處的索引。 |
int | indexOf(int ch, int fromIndex) 返回在此字元串中第一次出現指定字元處的索引,從指定的索引開始搜尋。 |
int | indexOf(String str) 返回指定子字元串在此字元串中第一次出現處的索引。 |
int | indexOf(String str, int fromIndex) 返回指定子字元串在此字元串中第一次出現處的索引,從指定的索引開始。 |
int | lastIndexOf(int ch) 返回指定字元在此字元串中最後一次出現處的索引。 |
int | lastIndexOf(int ch, int fromIndex) 返回指定字元在此字元串中最後一次出現處的索引,從指定的索引處開始進行反向搜尋。 |
int | lastIndexOf(String str) 返回指定子字元串在此字元串中最右邊出現處的索引。 |
int | lastIndexOf(String str, int fromIndex) 返回指定子字元串在此字元串中最後一次出現處的索引,從指定的索引開始反向搜尋。 |
int | offsetByCodePoints(int index, int codePointOffset) 返回此 String 中從給定的 index 處偏移 codePointOffset 個程式碼點的索引。 |
byte[] | getBytes() 使用平臺的預設字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 陣列中。 |
byte[] | getBytes(Charset charset) 使用給定的 charset 將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 陣列。 |
void | getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) 已過時。 該方法無法將字元正確轉換為位元組。從 JDK 1.1 起,完成該轉換的首選方法是通過 getBytes() 方法,該方法使用平臺的預設字元集。 |
byte[] | getBytes(String charsetName) 使用指定的字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 陣列中。 |
String | concat(String str) 將指定字元串連接到此字元串的結尾。 |
String | replace(char oldChar, char newChar) 返回一個新的字元串,它是通過用 newChar 替換此字元串中出現的所有 oldChar 得到的。 |
String | replace(CharSequence target, CharSequence replacement) 使用指定的文字值替換序列替換此字元串所有比對文字值目標序列的子字元串。 |
String | replaceAll(String regex, String replacement) 使用給定的 replacement 替換此字元串所有比對給定的正則表達式的子字元串。 |
String | replaceFirst(String regex, String replacement) 使用給定的 replacement 替換此字元串比對給定的正則表達式的第一個子字元串。 |
String[] | split(String regex) 根據給定正則表達式的比對拆分此字元串。 |
String[] | split(String regex, int limit) 根據比對給定的正則表達式來拆分此字元串。 |
String | substring(int beginIndex) 返回一個新的字元串,它是此字元串的一個子字元串。 |
String | substring(int beginIndex, int endIndex) 返回一個 |
beginIndex
- 起始索引(包括)。 endIndex
- 結束索引(不包括)。 int | compareTo(String anotherString) 按字典順序比較兩個字元串。 |
int | compareToIgnoreCase(String str) 按字典順序比較兩個字元串,不考慮大小寫。 |
boolean | contains(CharSequence s) 當且僅當此字元串包含指定的 char 值序列時,返回 true。 |
boolean | contentEquals(CharSequence cs) 將此字元串與指定的 CharSequence 比較。 |
boolean | contentEquals(StringBuffer sb) 將此字元串與指定的 StringBuffer 比較。 |
boolean | equals(Object anObject) 將此字元串與指定的物件比較。 |
boolean | equalsIgnoreCase(String anotherString) 將此 String 與另一個 String 比較,不考慮大小寫。 |
boolean | endsWith(String suffix) 測試此字元串是否以指定的後綴結束。 |
boolean | startsWith(String prefix) 測試此字元串是否以指定的前綴開始。 |
boolean | startsWith(String prefix, int toffset) 測試此字元串從指定索引開始的子字元串是否以指定前綴開始。 |
boolean | isEmpty() 當且僅當 length() 為 0 時返回 true。 |
boolean | matches(String regex) 告知此字元串是否比對給定的正則表達式。 |
boolean | regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測試兩個字元串區域是否相等。 |
boolean | regionMatches(int toffset, String other, int ooffset, int len) 測試兩個字元串區域是否相等。 |
ignoreCase
- 如果為 true
,則比較字元時忽略大小寫。 toffset
- 此字元串中子區域的起始偏移量。 other
- 字元串參數。 toffset
- 字元串參數中子區域的起始偏移量。 len
- 要比較的字元數。 char | charAt(int index) 返回指定索引處的 char 值。 |
int | codePointAt(int index) 返回指定索引處的字元(Unicode 程式碼點)。 |
int | codePointBefore(int index) 返回指定索引之前的字元(Unicode 程式碼點)。 |
int | codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本範圍中的 Unicode 程式碼點數。 |
CharSequence | subSequence(int beginIndex, int endIndex) 返回一個新的字元序列,它是此序列的一個子序列。 |
void | getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將字元從此字元串複製到目標字元陣列。 |
srcBegin
- 字元串中要複製的第一個字元的索引。srcEnd
- 字元串中要複製的最後一個字元之後的索引。dst
- 目標陣列。dstBegin
- 目標陣列中的起始偏移量。char[] | toCharArray() 將此字元串轉換為一個新的字元陣列。 |
String() 初始化一個新創建的 String 物件,使其表示一個空字元序列。 |
String(byte[] bytes) 通過使用平臺的預設字元集解碼指定的 byte 陣列,建構一個新的 String 。 |
String(byte[] bytes, Charset charset) 通過使用指定的 charset 解碼指定的 byte 陣列,建構一個新的 String 。 |
String(byte[] ascii, int hibyte) 已過時。 該方法無法將位元組正確地轉換為字元。從 JDK 1.1 開始,完成該轉換的首選方法是使用帶有 Charset 、字元集名稱,或使用平臺預設字元集的 String 建構子。 |
String(byte[] bytes, int offset, int length) 通過使用平臺的預設字元集解碼指定的 byte 子陣列,建構一個新的 String 。 |
String(byte[] bytes, int offset, int length, Charset charset) 通過使用指定的 charset 解碼指定的 byte 子陣列,建構一個新的 String 。 |
String(byte[] ascii, int hibyte, int offset, int count) 已過時。 該方法無法將位元組正確地轉換為字元。從 JDK 1.1 開始,完成該轉換的首選方法是使用帶有 Charset 、字元集名稱,或使用平臺預設字元集的 String 建構子。 |
String(byte[] bytes, int offset, int length, String charsetName) 通過使用指定的字元集解碼指定的 byte 子陣列,建構一個新的 String 。 |
String(byte[] bytes, String charsetName) 通過使用指定的 charset 解碼指定的 byte 陣列,建構一個新的 String 。 |
String(char[] value) 分派一個新的 String ,使其表示字元陣列參數中當前包含的字元序列。 |
String(char[] value, int offset, int count) 分派一個新的 String ,它包含取自字元陣列參數一個子陣列的字元。 |
String(int[] codePoints, int offset, int count) 分派一個新的 String ,它包含 Unicode 程式碼點陣列參數一個子陣列的字元。 |
String(String original) 初始化一個新創建的 String 物件,使其表示一個與參數相同的字元序列;換句話說,新創建的字元串是該參數字元串的副本。 |
String(StringBuffer buffer) 分派一個新的字元串,它包含字元串緩衝區參數中當前包含的字元序列。 |
String(StringBuilder builder) 分派一個新的字元串,它包含字元串產生器參數中當前包含的字元序列。 |
%[index$][標識][最小寬度]轉換方式
'-' 在最小寬度內左對齊,不可以與「用0填充」同時使用
'#' 只適用於8進制和16進制,8進制時在結果前面增加一個0,16進制時在結果前面增加0x
'+' 結果總是包括一個符號(一般情況下只適用於10進制,若對像為BigInteger才可以用於8進制和16進制)
' ' 正值前加空格,負值前加負號(一般情況下只適用於10進制,若對像為BigInteger才可以用於8進制和16進制)
'0' 結果將用零來填充
',' 只適用於10進制,每3位數字之間用「,」分隔
'(' 若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(同『+』具有同樣的限制)
System.out.println(String.format("%1$,09d", -3123));
System.out.println(String.format("%1$9d", -31));
System.out.println(String.format("%1$-9d", -31));
System.out.println(String.format("%1$(9d", -31));
System.out.println(String.format("%1$#9x", 5689));
//結果為:
//-0003,123
// -31
//-31
// (31)
// 0x1639
%[index$][標識][最少寬度][.精度]轉換方式
'-' 在最小寬度內左對齊,不可以與「用0填充」同時使用
'+' 結果總是包括一個符號
' ' 正值前加空格,負值前加負號
'0' 結果將用零來填充
',' 每3位數字之間用「,」分隔(只適用於fgG的轉換)
'(' 若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(只適用於eEfgG的轉換)
'e', 'E' -- 結果被格式化為用計算機科學記數法表示的十進制數
'f' -- 結果被格式化為十進制普通表示方式
'g', 'G' -- 根據具體情況,自動選擇用普通表示方式還是科學計數法方式
'a', 'A' -- 結果被格式化為帶有效位數和指數的十六進制浮點數
System.out.println(String.format("%1$d%%", 12));
'H' 24 小時制的小時,被格式化為必要時帶前導零的兩位數,即 00 - 23。
'I' 12 小時制的小時,被格式化為必要時帶前導零的兩位數,即 01 - 12。
'k' 24 小時制的小時,即 0 - 23。
'l' 12 小時制的小時,即 1 - 12。
'M' 小時中的分鐘,被格式化為必要時帶前導零的兩位數,即 00 - 59。
'S' 分鐘中的秒,被格式化為必要時帶前導零的兩位數,即 00 - 60 ("60" 是支持閏秒所需的一個特殊值)。
'L' 秒中的毫秒,被格式化為必要時帶前導零的三位數,即 000 - 999。
'N' 秒中的毫微秒,被格式化為必要時帶前導零的九位數,即 000000000 - 999999999。
'p' 特定於語言環境的 上午或下午 標記以小寫形式表示,例如 "am" 或 "pm"。使用轉換前綴 'T' 可以強行將此輸出轉換為大寫形式。
'z' 相對於 GMT 的 RFC 822 格式的數字時區偏移量,例如 -0800。
'Z' 表示時區縮寫形式的字符串。Formatter 的語言環境將取代參數的語言環境(如果有)。
's' 自協調世界時 (UTC) 1970 年 1 月 1 日 00:00:00 至現在所經過的秒數,即 Long.MIN_VALUE/1000 與 Long.MAX_VALUE/1000 之間的差值。
'Q' 自協調世界時 (UTC) 1970 年 1 月 1 日 00:00:00 至現在所經過的毫秒數,即 Long.MIN_VALUE 與 Long.MAX_VALUE 之間的差值。
'B' 特定於語言環境的月份全稱,例如 "January" 和 "February"。
'b' 特定於語言環境的月份簡稱,例如 "Jan" 和 "Feb"。
'h' 與 'b' 相同。
'A' 特定於語言環境的星期幾全稱,例如 "Sunday" 和 "Monday"
'a' 特定於語言環境的星期幾簡稱,例如 "Sun" 和 "Mon"
'C' 除以 100 的四位數表示的年份,被格式化為必要時帶前導零的兩位數,即 00 - 99
'Y' 年份,被格式化為必要時帶前導零的四位數(至少),例如,0092 等於格裡高利歷的 92 CE。
'y' 年份的最後兩位數,被格式化為必要時帶前導零的兩位數,即 00 - 99。
'j' 一年中的天數,被格式化為必要時帶前導零的三位數,例如,對於格裡高利歷是 001 - 366。
'm' 月份,被格式化為必要時帶前導零的兩位數,即 01 - 13。
'd' 一個月中的天數,被格式化為必要時帶前導零兩位數,即 01 - 31
'e' 一個月中的天數,被格式化為兩位數,即 1 - 31。
'R' 24 小時制的時間,被格式化為 "%tH:%tM"
'T' 24 小時制的時間,被格式化為 "%tH:%tM:%tS"。
'r' 12 小時制的時間,被格式化為 "%tI:%tM:%tS %Tp"。上午或下午標記 ('%Tp') 的位置可能與語言環境有關。
'D' 日期,被格式化為 "%tm/%td/%ty"。
'F' ISO 8601 格式的完整日期,被格式化為 "%tY-%tm-%td"。
'c' 日期和時間,被格式化為 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。
撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...