1. 程式人生 > 其它 >通過反射獲取欄位上註解值

通過反射獲取欄位上註解值

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);