顯示具有 JAVA-lang套件 標籤的文章。 顯示所有文章
顯示具有 JAVA-lang套件 標籤的文章。 顯示所有文章

2011年12月28日 星期三

[JAVA]介面 Iterable


java.lang
介面 Iterable<T>


實作這個介面允許物件成為 "foreach" 語句的目標。



 Iterator<T>iterator()
          返回一個在一組 T 型別的元素上進行迭代的迭代器。

所以常用的Collection、List等,都有實作此介面。

詳細參考:
JAVA API
Iterable (Java Platform SE 6)














其它文章

[JAVA]介面Cloneable


如果類別實作了 Cloneable 介面,
以指示 Object.clone() 方法可以合法地對該類別實例進行按欄位複製。

如果在沒有實作 Cloneable 介面的實例上調用 Object 的 clone 方法,
則會導致拋出 CloneNotSupportedException 異常。

按照慣例,實作此介面的類別應該使用公共方法覆寫 Object.clone(它是受保護的)。


注意,此介面不含 clone 方法。
因此,因為某個物件實作了此介面就複製它是不可能的。
即使 clone 方法是反射性調用的,也無法保證它將獲得成功。


JAVA API
Cloneable (Java Platform SE 6)












其它文章

[JAVA]Object-物件的複製使用clone()

[JAVA]Object-物件的複製使用clone()

要使用clone(),需要實作介面Cloneable。

Object 類別本身不實作介面 Cloneable,所以在類別為 Object 的物件上調用 clone 方法將會導致在運行時拋出異常。

CloneNotSupportedException - 
如果物件的類別不支持 Cloneable 介面,則覆寫 clone 方法的子類別也會拋出此異常,以指示無法複製某個實例。

Object 類別的 clone 方法執行特定的複製操作。
首先,如果此物件的類別不能實作介面 Cloneable,
則會拋出 CloneNotSupportedException。
注意,所有的陣列都被視為實作介面 Cloneable。
否則,此方法會創建此物件的類別的一個新實例,並像通過分派那樣,
嚴格使用此物件相應欄位的內容初始化該物件的所有欄位;
這些欄位的內容沒有被自我複製。
所以,此方法執行的是該物件的「淺表複製」,而不「深層複製」操作。

測試:
一般用法:(淺表複製)
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));
 }

}
結果在物件裡的物件,無法複製。


結決方法:Override clone
例:
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));
 }

}

結果:



進階參考網站:

小妖與鴨居的家














其它文章

[JAVA]Object的用法

Object 是所有的類別的父類別。
每個類別都會extends Object ,所以程式不要寫,就會自動extends。
所有物件(包括陣列)都實作這個類別的方法。

用法:
只有一個建構子(constructor) Object()。
Object object =new Object();

常用的方法:


 booleanequals(Object obj)
          指示其他某個物件是否與此物件「相等」。


                Object object =new Object();
Object object1 =new Object();
System.out.println(object.equals(object1));//false
Object object2 = object;
System.out.println(object.equals(object2));//true




 StringtoString()
          返回該物件的字元串表示。


Object 類別的 toString 方法返回一個字元串, 該字元串由類別名(物件是該類別的一個實例)、 at 標記符“@”和此物件雜湊碼的無符號十六進製表示組成。 換句話說,該方法返回一個字元串,它的值等於:
getClass().getName() + '@' + Integer.toHexString(hashCode())


System.out.println(object.toString());//java.lang.Object@ecd7e
System.out.println(object1.toString());//java.lang.Object@1d520c4
System.out.println(object2.toString());//java.lang.Object@ecd7e



其它方法:


protected  Objectclone()
          創建並返回此物件的一個副本。
protected  voidfinalize()
          當垃圾回收器確定不存在對該物件的更多參考時,由物件的垃圾回收器調用此方法。
 Class<?>getClass()
          返回此 Object 的運行時類別。
 inthashCode()
          返回該物件的雜湊碼值。
 voidnotify()
          喚醒在此物件監視器上等待的單個執行緒。
 voidnotifyAll()
          喚醒在此物件監視器上等待的所有執行緒。
 voidwait()
          在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法前,導致當前執行緒等待。
 voidwait(long timeout)
          在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量前,導致當前執行緒等待。
 voidwait(long timeout, int nanos)
          在其他執行緒調用此物件的 notify() 方法或 notifyAll() 方法,或者其他某個執行緒中斷當前執行緒,或者已超過某個實際時間量前,導致當前執行緒等待。
執行緒相關的方法:
notify、notifyAll、wait
另章介紹 

                建製中…


回收器相關的方法:
finalize()

另章介紹 
                建製中…


取得class 套件名稱:
System.out.println(object.getClass());//class java.lang.Object


複製的方法:
clone()
另章介紹
[JAVA]Object-物件的複製使用clone()


JAVA Object API

Object (Java Platform SE 6)












其它文章

2011年12月27日 星期二

[JAVA]String目錄


String基礎用法


String進階方法


String問題解決方法












其它文章

[JAVA]String-取字串長度的方法: length、去掉前後空白方法:trim、其它方法:hashCode


取字串長度的方法: length

intlength()
返回此字元串的長度。

使用方式:
                  String string6 = "12356";             
                  System.out.println(string6.length());//5



去掉前後空白方法:trim

Stringtrim()
返回字元串的副本,忽略前導空白和尾部空白。

使用方式:

                String string20 = "   java    ";
System.out.println(string20.trim());//java

其它方法:hashCode
inthashCode()
返回此字元串的雜湊碼。

使用方式:

                  String string6 = "12356";
                  System.out.println(string6.hashCode());

參考:
String API
















其它文章

[JAVA]String-將各種型態轉為String的方法:copyValueOf、format、valueOf、toLowerCase、toUpperCase、intern、toString


[JAVA]String-將各種型態轉為String的方法:copyValueOf、format、valueOf、toLowerCase、toUpperCase、intern、toString

static StringcopyValueOf(char[] data)
返回指定陣列中表示該字元序列的 String。
static StringcopyValueOf(char[] data, int offset, int count)
返回指定陣列中表示該字元序列的 String。

使用方式:
                  char[] chars = new char[] {'j','a','v','a'};
                  System.out.println(String.copyValueOf(chars));//java
                  System.out.println(String.copyValueOf(chars,0,2));//ja


static Stringformat(Locale l, String format, Object... args)
使用指定的語言環境、格式字元串和參數返回一個格式化字元串。
static Stringformat(String format, Object... args)
使用指定的格式字元串和參數返回一個格式化字元串。

使用方式:

                簡單的用法

                String string3 = "%s or %s";
String string4  = "今天%d點%d分";
System.out.println(String.format(string3, "java", "mysql"));//java or mysql
System.out.println(String.format(string4, 18, 50));//今天18點50分


                格式為百分比
                System.out.println(String.format("%1$d%%", 12));//12%
                顯示9位數子,不足前補0
System.out.println(String.format("%1$,09d", 15987));//00015,987

                時間
                long now = System.currentTimeMillis();
System.out.println(String.format(Locale.getDefault(),"%tR", now));   // "15:12"
System.out.println(String.format(Locale.getDefault(),"%1$tm %1$te,%1$tY", now));
                //12 27,2011
System.out.println(String.format("%1$tb %1$te,%1$tY", now));
                //十二月 27,2011
System.out.println(String.format(Locale.US,"%1$tb %1$te,%1$tY", now));
               //Dec 27,2011




                進階用法:String.format 方法使用介紹


修飾詞
回傳值
方法
說明
static StringvalueOf(boolean b)
返回 boolean 參數的字元串表示形式。
static StringvalueOf(char c)
返回 char 參數的字元串表示形式。
static StringvalueOf(char[] data)
返回 char 陣列參數的字元串表示形式。
static StringvalueOf(char[] data, int offset, int count)
返回 char 陣列參數的特定子陣列的字元串表示形式。
static StringvalueOf(double d)
返回 double 參數的字元串表示形式。
static StringvalueOf(float f)
返回 float 參數的字元串表示形式。
static StringvalueOf(int i)
返回 int 參數的字元串表示形式。
static StringvalueOf(long l)
返回 long 參數的字元串表示形式。
static StringvalueOf(Object obj)
返回 Object 參數的字元串表示形式。
使用方式:

                boolean b = true;
System.out.println(String.valueOf(b));// true
char c = 'a';
System.out.println(String.valueOf(c));// a
char[] data = new char[] { 'j', 'a', 'v', 'a' };
System.out.println(String.valueOf(data));// java
System.out.println(String.valueOf(data, 1, 1));// a
double d = 0.001;
System.out.println(String.valueOf(d));// 0.0010
float f = 0.001f;
System.out.println(String.valueOf(f));// 0.0010
  int i =10;
  System.out.println(String.valueOf(i));// 10
  long l =10L;
  System.out.println(String.valueOf(l));// 10
  Object obj = new  Object();
  System.out.println(String.valueOf(obj));// java.lang.Object@ecd7e

StringtoLowerCase()
使用預設語言環境的規則將此 String 中的所有字元都轉換為小寫。
StringtoLowerCase(Locale locale)
使用給定 Locale 的規則將此 String 中的所有字元都轉換為小寫。
StringtoUpperCase()
使用預設語言環境的規則將此 String 中的所有字元都轉換為大寫。
StringtoUpperCase(Locale locale)
使用給定 Locale 的規則將此 String 中的所有字元都轉換為大寫。
使用方式:

                 Locale顯示一個數值就是語言環境敏感的操作,
應該根據使用者的國家、地區或文化的風俗/傳統來格式化該數值

                String string21 = "JAVA";
System.out.println(string21.toLowerCase());//java
System.out.println(string21.toLowerCase(Locale.US));//java

String string22 = "java";
System.out.println(string22.toUpperCase());//JAVA
System.out.println(string22.toUpperCase(Locale.US));//java


Stringintern()
返回字元串物件的規範化表示形式。

使用方式:
                  String string6 = "12356";
                  System.out.println(string7.intern());//12356


StringtoString()
返回此物件本身(它已經是一個字元串!)。
使用方式:
                   String string6 = "12356";
                   System.out.println(string6.toString());

參考:
String API
















其它文章

[JAVA]String-字串搜尋的方法: indexOf 、 lastIndexOf 、 offsetByCodePoints


[JAVA]String-字串搜尋的方法: indexOf 、 lastIndexOf 、 offsetByCodePoints 


intindexOf(int ch)
返回指定字元在此字元串中第一次出現處的索引。
intindexOf(int ch, int fromIndex)
返回在此字元串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
intindexOf(String str)
返回指定子字元串在此字元串中第一次出現處的索引。
intindexOf(String str, int fromIndex)
返回指定子字元串在此字元串中第一次出現處的索引,從指定的索引開始。

使用方式:

                String string7 = "javajava";
System.out.println(string7.indexOf('a'));//1
System.out.println(string7.indexOf('a',2));//3
System.out.println(string7.indexOf("java"));//0
System.out.println(string7.indexOf("java",2));//4


intlastIndexOf(int ch)
返回指定字元在此字元串中最後一次出現處的索引。
intlastIndexOf(int ch, int fromIndex)
返回指定字元在此字元串中最後一次出現處的索引,從指定的索引處開始進行反向搜尋。
intlastIndexOf(String str)
返回指定子字元串在此字元串中最右邊出現處的索引。
intlastIndexOf(String str, int fromIndex)
返回指定子字元串在此字元串中最後一次出現處的索引,從指定的索引開始反向搜尋。

使用方式:

                System.out.println(string7.lastIndexOf('a'));//7
System.out.println(string7.lastIndexOf('a',2));//1
System.out.println(string7.lastIndexOf("java"));//4
System.out.println(string7.lastIndexOf("java",2));//0



intoffsetByCodePoints(int index, int codePointOffset)
返回此 String 中從給定的 index 處偏移 codePointOffset 個程式碼點的索引。

使用方式:

                String string11 = "abdetuiop";
System.out.println(string11.offsetByCodePoints(1,2));//3



參考:
String API
















其它文章

[JAVA]String-轉為byte的方法:getBytes


[JAVA]String-轉為byte的方法:getBytes

byte[]getBytes()
使用平臺的預設字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte  陣列中。
byte[]getBytes(Charset charset)
使用給定的 charset 將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 陣列。
voidgetBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
已過時。 該方法無法將字元正確轉換為位元組。從 JDK 1.1 起,完成該轉換的首選方法是通過 getBytes() 方法,該方法使用平臺的預設字元集。
byte[]getBytes(String charsetName)
使用指定的字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 陣列中。

使用方式:

                byte [] bytes1=string.getBytes();
byte [] bytes2=string.getBytes(Charset.defaultCharset() );
try {
byte [] bytes3=string.getBytes("UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

參考:
String API
















其它文章

[JAVA]String-字串處理的方法:concat、replace、replaceAll、replaceFirst、split、substring


[JAVA]String-字串處理的方法:concat、replace、replaceAll、replaceFirst、split、substring

Stringconcat(String str)
將指定字元串連接到此字元串的結尾。

使用方式:

                  String string1 = "a";
                String string2 = "A";

                  System.out.println(string1.concat(string2));//aA


Stringreplace(char oldChar, char newChar)
返回一個新的字元串,它是通過用 newChar 替換此字元串中出現的所有 oldChar 得到的。
Stringreplace(CharSequence target, CharSequence replacement)
使用指定的文字值替換序列替換此字元串所有比對文字值目標序列的子字元串。
StringreplaceAll(String regex, String replacement)
使用給定的 replacement 替換此字元串所有比對給定的正則表達式的子字元串。
StringreplaceFirst(String regex, String replacement)
使用給定的 replacement 替換此字元串比對給定的正則表達式的第一個子字元串。

使用方式:

                String string13 = "java";
System.out.println(string13.replace('a','1'));//j1v1
System.out.println(
                                string13.replace(string13.subSequence(2, 3),
                                string13.subSequence(0, 1)));//jaja
System.out.println(string13.replaceAll("a", "5"));//j5v5
System.out.println(string13.replaceFirst("a", "5"));//j5va



String[]split(String regex)
根據給定正則表達式的比對拆分此字元串。
String[]split(String regex, int limit)
根據比對給定的正則表達式來拆分此字元串。

使用方式:

                String string14 = "java,mysql,java,mysql";
String string15[]=string14.split(",");
System.out.println(string15[1]);
//陣列可以是任何長度,第二參數代入長度
String string16[]=string14.split(",",5);
System.out.println(string16.length);


Stringsubstring(int beginIndex)
返回一個新的字元串,它是此字元串的一個子字元串。
Stringsubstring(int beginIndex, int endIndex)
返回一個

使用方式:


         參數:
   beginIndex - 起始索引(包括)。
   endIndex - 結束索引(不包括)。 


                String string18 = "java";
System.out.println(string18.substring(2));//va
System.out.println(string18.substring(0,2));//ja






參考:
String API
















其它文章

[JAVA]String-比較類型的方法:compareTo、compareToIgnoreCase、contains、contentEquals、equals、 endsWith 、 startsWith 、 isEmpty 、 matches 、 regionMatches


[JAVA]String-比較類型的方法:compareTo、compareToIgnoreCase、contains、contentEquals、equals、 endsWith 、 startsWith 、 isEmpty 、 matches 、 regionMatches 
比較類型的方法:


intcompareTo(String anotherString)
按字典順序比較兩個字元串。
intcompareToIgnoreCase(String str)
按字典順序比較兩個字元串,不考慮大小寫。

使用方式:

                String string1 = "a";
String string2 = "A";
System.out.println(string1.compareTo(string2));//32

System.out.println(string1.compareToIgnoreCase(string2));//0



booleancontains(CharSequence s)
當且僅當此字元串包含指定的 char 值序列時,返回 true。


使用方式:           
                String string   = "java";
                String string1 = "a";
String string2 = "A";
                System.out.println(string.contains(string1.subSequence(0, 1)));//true
System.out.println(string.contains(string2.subSequence(0, 1)));//false




booleancontentEquals(CharSequence cs)
將此字元串與指定的 CharSequence 比較。
booleancontentEquals(StringBuffer sb)
將此字元串與指定的 StringBuffer 比較。

使用方式:          
                String string   = "java";
                String string1 = "a";
                StringBuffer stringBuffer = new StringBuffer("java");

                System.out.println(string.contentEquals(string1.subSequence(0, 1)));//false
System.out.println(string.contentEquals(stringBuffer));//true



booleanequals(Object anObject)
將此字元串與指定的物件比較。
booleanequalsIgnoreCase(String anotherString)
將此 String 與另一個 String 比較,不考慮大小寫。

使用方式:
                String string   = "java";

                System.out.println(string.equals("java"));//true
System.out.println("Java".equals(string));//false
System.out.println(string.equalsIgnoreCase("java"));//true
System.out.println("Java".equalsIgnoreCase(string));//true



booleanendsWith(String suffix)
測試此字元串是否以指定的後綴結束。

使用方式:

                String string5 = "java.";
System.out.println(string.endsWith("."));//false
System.out.println(string5.endsWith("."));//true


booleanstartsWith(String prefix)
測試此字元串是否以指定的前綴開始。
booleanstartsWith(String prefix, int toffset)
測試此字元串從指定索引開始的子字元串是否以指定前綴開始。

使用方式:

                String string17 = "#1236598";
System.out.println(string17.startsWith("#"));//true
System.out.println(string17.startsWith("#",1));//false
System.out.println(string17.startsWith("1",1));//true


booleanisEmpty()
當且僅當 length() 為 0 時返回 true

使用方式:

                String string8 = "";
System.out.println(string8.isEmpty());//true
                String string7 = "javajava";
System.out.println(string7.isEmpty());//false




booleanmatches(String regex)
告知此字元串是否比對給定的正則表達式。

使用方式:

        String string9 = "0980456987";
System.out.println(string9.matches("[0-9]{4}-[0-9]{6}"));//false
String string10 = "0980-456987";
System.out.println(string10.matches("[0-9]{4}-[0-9]{6}"));//true



booleanregionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。
booleanregionMatches(int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。




使用方式:
                參數:
        ignoreCase - 如果為 true,則比較字元時忽略大小寫。
        toffset - 此字元串中子區域的起始偏移量。
        other - 字元串參數。
        toffset - 字元串參數中子區域的起始偏移量。
        len - 要比較的字元數。 


                String string12 = "java";
System.out.println(string12.regionMatches(true,3,"a",0,1));//true
System.out.println(string12.regionMatches(2,"a",0,1));//false


參考:
String API
















其它文章

[JAVA]String-取出字串某個位置的字元的方法:charAt、codePointAt、codePointBefore、codePointCount、subSequence、getChars、toCharArray


[JAVA]String-取出字串某個位置的字元的方法:charAt、codePointAt、codePointBefore、codePointCount、subSequence、getChars、toCharArray

charcharAt(int index)
返回指定索引處的 char 值。

使用方式:
                說明:取出字串 位置在索引為1的字元。
                String string = "java";
System.out.println(string.charAt(1)); // a



intcodePointAt(int index)
返回指定索引處的字元(Unicode 程式碼點)。
intcodePointBefore(int index)
返回指定索引之前的字元(Unicode 程式碼點)。
intcodePointCount(int beginIndex, int endIndex)
返回此 String 的指定文本範圍中的 Unicode 程式碼點數。

使用方式:
                 說明:取出字串 位置在索引為1的字元的Unicode。
                 System.out.println(string.codePointAt(1));//97
             
                 說明:取出字串 位置在索引為1的前一個字元的Unicode。
System.out.println(string.codePointBefore(1));//106

說明:依字串指定範圍中,算出總數。
System.out.println(string.codePointCount(0,3));//3




CharSequencesubSequence(int beginIndex, int endIndex)
返回一個新的字元序列,它是此序列的一個子序列。

使用方式:
                  說明:切字串從索引第1位到第3位
                  String string = "java";
                  System.out.println(string.subSequence(1, 3));//av



voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
將字元從此字元串複製到目標字元陣列。

使用方式:






srcBegin - 字元串中要複製的第一個字元的索引。
srcEnd - 字元串中要複製的最後一個字元之後的索引。
dst - 目標陣列。
dstBegin - 目標陣列中的起始偏移量。
 char[] chars1 = new char[] {'j','a','v','a'};
String string6 = "12356";
string6.getChars(0,3,chars1,1);
System.out.println(chars1);//j123



char[]toCharArray()
將此字元串轉換為一個新的字元陣列。

使用方式:
                說明:將字串轉為字元陣列
                String string19 = "java";
char [] chars2 = string19.toCharArray();



參考:
String API













其它文章

[JAVA]String-new String()類別-建搆子

[JAVA]String-new String()類別-建搆子

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)
分派一個新的字元串,它包含字元串產生器參數中當前包含的字元序列。
使用方式:

  //建立一個空字串的物件。
String str1 = new String();

//通過使用平臺的預設字元集解碼指定的 byte 陣列,建構一個新的 String。
byte[] bytes = new byte[] {'j','a','v','a'};
String str2 = new String(bytes);

//通過使用指定的 charset解碼指定的 byte 陣列,建構一個新的 String。
String str3 = new String(bytes,Charset.defaultCharset());

//通過使用平臺的預設字元集解碼指定的 byte 子陣列,建構一個新的 String。
String str4 = new String(bytes, 1, 2);

//通過使用指定的 charset解碼指定的 byte 子陣列,建構一個新的 String。
String str5 = new String(bytes, 1, 2, Charset.defaultCharset());

//通過使用指定的字元集解碼指定的 byte 子陣列,建構一個新的 String。
try {
String str6 = new String(bytes, 1, 2, "UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

//建立一個以字元陣列為參數的字串物件。
char[] chars = new char[] {'j','a','v','a'};
String str7 = new String(chars);

//建立一個指定字元陣列的位置與長度,來當作參數的字串物件。
String str8 = new String(chars,1,2);

//分派一個新的 String,它包含 Unicode 程式碼點陣列參數一個子陣列的字元。
int[] codePoints ={65,66,67,68,69,70};
String str9 = new String(codePoints, 1, 2);

//建立一個以字串為參數的字串物件。
String str10 = new String("java");

//建立一個以StringBuilder為參數的字串物件。
StringBuilder stringBuilder = new StringBuilder("java");
String str11 = new String(stringBuilder) ;

//建立一個以字串暫存區為參數的字串物件。
StringBuffer stringBuffer = new StringBuffer("java");
String str12 = new String(stringBuffer);

參考:
String API













其它文章

[JAVA]java.lang套件目錄

此套件為提供利用 Java 程式語言進行程序設計的基礎類別。
每支java程式,都會自動Import java.lang.*;

介面目錄 
  1. Appendable 
  2. CharSequence 
  3. Cloneable
  4. Comparable 
  5. Iterable
  6. Readable 
  7. Runnable 
  8. Thread.UncaughtExceptionHandler


類別目錄

  1. Boolean 
  2. Byte 
  3. Character 
  4. Character.Subset 
  5. Character.UnicodeBlock 
  6. Class 
  7. ClassLoader 
  8. Compiler 
  9. Double 
  10. Enum 
  11. Float 
  12. InheritableThreadLocal 
  13. Integer 
  14. Long 
  15. Math 
  16. Number 
  17. Object
  18. Package 
  19. Process 
  20. ProcessBuilder 
  21. Runtime 
  22. RuntimePermission 
  23. SecurityManager 
  24. Short 
  25. StackTraceElement 
  26. StrictMath 
  27. String
  28. StringBuffer 
  29. StringBuilder 
  30. System 
  31. Thread 
  32. ThreadGroup 
  33. ThreadLocal 
  34. Throwable Void 

中文JAVA6 API
英文JAVA6 API












其它文章

[JAVA][轉貼]String.format 方法使用介紹

在JDK1.5中,String類增加了一個非常有用的靜態函數format(String format, Objece... argues),可以將各類數據格式化為字符串並輸出。其中format參數指定了輸出的格式,是最複雜也是最難掌握的一點,而argues則是一系列等 待被格式化的對象。該函數對c語言中printf函數的用法進行了一定的模仿,因此有c語言基礎的人學起來會輕鬆許多。下面我們著重討論一下format 參數的格式及含義。
format參數中可以包含不需要轉化的字符串,這些字符串是你寫什麼,最終就輸出什麼。同時還包含一些特殊格式的內容,來指定將哪個對象來轉換,以及轉 換成什麼形式。這種特殊的格式通通以%index$開頭,index從1開始取值,表示將第index個參數拿進來進行格式化。這一點比c語言要強一點, c語言只能按照參數的順序依次格式化,而java可以選擇第n個參數來格式化。由於該函數可以對任意一個對像進行格式化,不同的對象適用的參數也不同,因 此我們下面分類來討論。

1.對整數進行格式化:

%[index$][標識][最小寬度]轉換方式

我們可以看到,格式化字符串由4部分組成,其中%[index$]的含義我們上面已經講過,[最小寬度]的含義也很好理解,就是最終該整數轉化的字符串最少包含多少位數字。我們來看看剩下2個部分的含義吧:
標識:

'-'    在最小寬度內左對齊,不可以與「用0填充」同時使用
'#'    只適用於8進制和16進制,8進制時在結果前面增加一個0,16進制時在結果前面增加0x
'+'    結果總是包括一個符號(一般情況下只適用於10進制,若對像為BigInteger才可以用於8進制和16進制)
'  '    正值前加空格,負值前加負號(一般情況下只適用於10進制,若對像為BigInteger才可以用於8進制和16進制)
'0'    結果將用零來填充
','    只適用於10進制,每3位數字之間用「,」分隔
'('    若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(同『+』具有同樣的限制)


轉換方式:
d-十進制 o-八進制 x或X-十六進制
上面的說明過於枯燥,我們來看幾個具體的例子。
需要特別注意的一點是:大部分標識字符可以同時使用。

        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


2.對浮點數進行格式化:

%[index$][標識][最少寬度][.精度]轉換方式

我們可以看到,浮點數的轉換多了一個「精度」選項,可以控制小數點後面的位數。
標識:

'-'    在最小寬度內左對齊,不可以與「用0填充」同時使用
'+'    結果總是包括一個符號
'  '    正值前加空格,負值前加負號
'0'    結果將用零來填充
','    每3位數字之間用「,」分隔(只適用於fgG的轉換)
'('    若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(只適用於eEfgG的轉換)


轉換方式:

'e', 'E'  --  結果被格式化為用計算機科學記數法表示的十進制數
'f'          --  結果被格式化為十進制普通表示方式
'g', 'G'    --  根據具體情況,自動選擇用普通表示方式還是科學計數法方式
'a', 'A'    --   結果被格式化為帶有效位數和指數的十六進制浮點數


3.對字符進行格式化:
對字符進行格式化是非常簡單的,c表示字符,標識中'-'表示左對齊,其他就沒什麼了。

4.對百分比符號進行格式化:
看了上面的說明,大家會發現百分比符號「%」是特殊格式的一個前綴。那麼我們要輸入一個百分比符號該怎麼辦呢?肯定是需要轉義字符的,但是要注意的是,在這裡轉義字符不是「\」,而是「%」。換句話說,下面這條語句可以輸出一個「12%」:

System.out.println(String.format("%1$d%%", 12));


5.取得平台獨立的行分隔符:
System.getProperty("line.separator")可以取得平台獨立的行分隔符,但是用在format中間未免顯得過於煩瑣了。於是format函數自帶了一個平台獨立的行分隔符那就是String.format("%n")。

6.對日期類型進行格式化:
以下日期和時間轉換的後綴字符是為 't' 和 'T' 轉換定義的。這些類型相似於但不完全等同於那些由 GNU date 和 POSIX strftime(3c) 定義的類型。提供其他轉換類型是為了訪問特定於 Java 的功能(如將 'L' 用作秒中的毫秒)。

以下轉換字符用來格式化時間:

'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]String-String的用法


  • 字串是以雙引號(")之間的字元,可以包含數字、英文字母、符號和特殊字元等。 
  • 字串是不能更改內容值的,如更改值是再建另一個字串。 
  • 字串的兩種建立方式 
         基本型態宣告
                      String 變數="字串內容";
         類別型態宣告
                      String 物件 = new String("字串內容");

  • 如果宣告一個字串變數後,會在記憶體中配置位址給字串,如果要將變數宣告成另一個字串內容時,編譯器是以下方的情況來處理:



參考:
String API
















其它文章

標籤

Oracle (150) Oracle DB (144) Oracle_DB (143) Oracle SQL (135) JAVA (84) css-基本類 (65) MySQL (59) CSS Selector (58) jQuery (49) JavaScript-基本類 (39) Spring Boot (38) JavaScript (37) JavaScript HTML DOM (37) JavaScript-HTML_DOM (36) CSS3 (30) JAVA-基本類 (28) jQuery UI (27) Apache (23) Oracle GROUP BY (20) datepicker (20) Android (18) Oracle Date (17) c (17) JAVA-lang套件 (16) Linux (16) Oracle Sub Query (16) Spring-基本類 (16) jQuery-基本類 (16) MySQL-進階系列教學 (15) Android基本類 (14) Grails (14) Oracle join (14) SQLite (13) Spring (13) WIN7-基本類 (13) grails-基本類 (13) linux cent os (13) CKEditor (12) JAVA-流程控制類 (12) JAVA_Spring (12) PHP (11) Spring MVC (11) MySQL-基本系列教學 (10) Notepad (10) Notepad++ (10) SQLite for java (10) Windows (10) c/c++ (10) eclipse (9) jQuery-Selector (9) sqldeveloper (9) DB_Toad (8) JAVA_IDE_Eclipse (8) JavaScript-String類 (8) MySQL DB Toad (8) MySQL-DATE相關 (8) MySQL-函式相關 (8) Spring Bean (8) Android Studio (7) HTML5 (7) Hibernate (7) JAVA-OCWCD (7) JavaScript-陣列類 (7) Docker (6) JAVA-程式分享 (6) JAVA.util套件 (6) JavaScript-數學類 (6) MinGw (6) MySQL-其它類 (6) Servlet (6) centos (6) Apache_Tomcat (5) Apache套件_POI (5) CSS (5) JavaScript-Date物件 (5) JavaScript-其它類 (5) PostgreSQL (5) httpd (5) log4j (5) 基本資訊 (5) 開發工具 (5) CSS Properties (4) Dev-C++ (4) IntelliJ IDEA (4) Oracle DDL (4) Sublime (4) TortoiseSVN (4) apache_Maven (4) Android NDK (3) Eclipse IDE for C/C++ (3) Hibernate-基本類 (3) JAVA-問題 (3) JAVA-綀習分享 (3) JVM (3) Linux 指令 (3) Proxy Server (3) Spring Mobile (3) Spring web (3) Squid (3) VirtualBox (3) maven (3) zk (3) 生活其它 (3) Bootstrap (2) Filter (2) JAVA_IO (2) JAVA_其它_itext套件 (2) JBoss-問題 (2) JSP (2) Jboss (2) Listener (2) MySQL-語法快速查詢 (2) Spring AOP (2) Spring Batch (2) Spring Boot Actuator (2) Spring i18n (2) Subversive (2) Tomcat 8 (2) UML (2) WebJars (2) WinMerge (2) c++ (2) c語言綀習題 (2) jQuery Mobile (2) jQuery-事件處理 (2) jQuery-套件類 (2) putty (2) svn (2) weblogic (2) Apache_JMeter (1) Apache套件_BeanUtils (1) Apache套件_StringUtils (1) Base64 (1) Google API (1) HTML5-基本類 (1) Heap (1) JAVA 7 (1) JAVA SE 、JAVA EE、JAVA ME (1) JAVA 日期 (1) JAVA-OCJP (1) JAVA-WEB (1) JAVA_IDE (1) JAVA其它 (1) JBoss Server (1) JDK (1) JMX (1) JRE (1) Java RMI (1) Java String (1) Joda Time (1) Linux_其它 (1) MySQL教學 (1) Oracle_VirtualBox (1) SQL Server (1) SWT (1) Session (1) Stack (1) Struts 2 (1) Tool (1) ZK Studio (1) csv (1) grails-其它類 (1) jQuery-進階 (1) java mail (1) java web (1) java8 (1) jsoup (1) mockmvc (1) modules (1) tomcat (1) win10 (1) 其它類 (1) 圖片工具 (1) 模擬器 (1) 讀書分享 (1) 開發資訊 (1)

精選文章

初學 Java 的 HelloWorld 程式

撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...