通過反射獲取欄位上註解值
1.1 String類的概述
查閱API中的String類的描述,發現String 類代表字串。Java 程式中的所有字串字面值(如 "abc" )都作為此類的例項實現。
//演示字串
String str = "oracle";
str = "甲骨文";
繼續查閱API發現說字串是常量;它們的值在建立之後不能更改,這是什麼意思呢?其實就是說一旦這個字串確定了,那麼就會在記憶體區域中就生成了這個字串。字串本身不能改變,但str變數中記錄的地址值是可以改變的。
字串的本質是一個字元的陣列。
繼續查API發現,字串有大量的過載的構造方法。通過String類的構造方法可以完成字串物件的建立,那麼,通過使用雙引號的方式建立物件與new的方式建立物件,有什麼不同呢?看如下程式與圖解:
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3==s4);//false
System.out.println(s3.equals(s4));//true,
//因為String重寫了equals方法,建立了字串自己的判斷相同的依據(通過字串物件中的字元來判斷)
s3和s4的建立方式有什麼不同呢?
l s3建立,在記憶體中只有一個物件。這個物件在字串常量池中
l s4建立,在記憶體中有兩個物件。一個new的物件在堆中,一個字串本身物件,在字串常量池中
1.2 String類構造方法
構造方法是用來完成String物件的建立,下圖中給出了一部分構造方法需要在API中找到,並能夠使用下列構造方法建立物件。
String s1 = new String(); //建立String物件,字串中沒有內容
byte[] bys = new byte[]{97,98,99,100};
String s2 = new String(bys); // 建立String物件,把陣列元素作為字串的內容
String s3 = new String(bys, 1, 3); //建立String物件,把一部分陣列元素作為字串的內容,引數offset為陣列元素的起始索引位置,引數length為要幾個元素
char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
String s4 = new String(chs); //建立String物件,把陣列元素作為字串的內容
String s5 = new String(chs, 0, 3);//建立String物件,把一部分陣列元素作為字串的內容,引數offset為陣列元素的起始索引位置,引數count為要幾個元素
String s6 = new String(“abc”); //建立String物件,字串內容為abc
1.3 String類的方法查詢
String類中有很多的常用的方法,我們在學習一個類的時候,不要盲目的把所有的方法嘗試去使用一遍,這時我們應該根據這個物件的特點分析這個物件應該具備那些功能,這樣大家應用起來更方便。
字串是一個物件,那麼它的方法必然是圍繞操作這個物件的資料而定義的。我們想想字串中有哪些功能呢?
l 字串中有多少個字元?
String str = "abcde";
int len = str.length();
System.out.println("len="+len);
l 獲取部分字串。
String str = "abcde";
String s1 = str.substring(1); //返回一個新字串,內容為指定位置開始到字串末尾的所有字元
String s2 = str.substring(2, 4);//返回一個新字串,內容為指定位置開始到指定位置結束所有字元
System.out.println("str="+str);
System.out.println("s1="+s1);
System.out.println("s2="+s2);