=============================封裝類===============
          針對(duì)八種基本數(shù)據(jù)類型定義的相應(yīng)的引用類型-封裝類(包裝類,包裹類)
          基本數(shù)據(jù)類型????????? 封裝類
          ?boolean?????????????? Boolean
          ?byte????????????????? Byte
          ?short???????????????? Short
          ?int?????????????????? Integer
          ?long????????????????? Long
          ?char????????????????? Character
          ?float???????????????? Float
          ?double??????????????? Double
          所有的封狀類都是一個(gè)只讀類(不能修改的).針對(duì)沒個(gè)基本類型我們只能建立一個(gè)這讀的。

          class Test
          {
          ?public static void main(String[] args)
          ?{
          ? int i=3;
          ? Integer in=new Integer(i);
          ? int j=in.intValue();
          ? System.out.println(j);
          ? String str=in.toString();? //把Integer對(duì)象轉(zhuǎn)換為String類型
          ? System.out.println("str="+str);
          ?
          ? String str1="123";
          ? System.out.println(Integer.valueOf(str1));? //把String類型轉(zhuǎn)換為Integer類型
          ?
          ? boolean b1=false;
          ? Boolean b=new Boolean(b1);
          ? String s1=b.toString();
          ? System.out.println(s1);
          ?
          ? String s2="NO";
          ? System.out.println(Boolean.valueOf(s2));
          ?}
          }

          *****************Class*********************
          1> 在Java中,每個(gè)class都有一個(gè)相應(yīng)的Class對(duì)象。也就是說,當(dāng)我們編寫一個(gè)類,編譯完成后,在生成
          ?? 的.class文件中,就會(huì)產(chǎn)生一個(gè)Class對(duì)象,用于表示這個(gè)類的類型信息。
          2> 獲取Class實(shí)例的方法有三種:
          ?? <1>利用對(duì)象調(diào)用getClass()方法獲得該對(duì)象的Class實(shí)例。
          ?? <2>使用Class類的靜態(tài)方法forName(),用類的名字獲取一個(gè)Class的是實(shí)例。
          ?? <3>運(yùn)用.class的方式來獲取Class實(shí)例,對(duì)于基本數(shù)據(jù)類型的封裝類,還可以用.TYPE來獲取相應(yīng)的
          ????? 基本數(shù)據(jù)類型的Class實(shí)例。
          ?? <4>在運(yùn)行期間,如果我們要產(chǎn)生某個(gè)類的對(duì)象,JAVA虛擬機(jī)(JVM)會(huì)檢查該類型的Class對(duì)象是否被
          ????? 加載,如果沒有加載,JVM會(huì)根據(jù)類的名稱找到.class文件并加載它。一旦某個(gè)類型的Class對(duì)象已
          ????? 經(jīng)被加載到內(nèi)存,就可以用它來產(chǎn)生該類型所有的對(duì)象。
          ?? <5>newInstance()調(diào)用類中缺省的構(gòu)造方法。(好處是我們?cè)诓恢李惖拿值那闆r下去創(chuàng)造一個(gè)實(shí)例)
          import java.lang.reflect.*;?????? //子包必須手動(dòng)導(dǎo)入
          class ClassTest
          {
          ?public static void main(String[] args)//throws Exception
          ?{
          ? /*
          ? Point pt=new Point();?????????????
          ? Class c1=pt.getClass();//利用對(duì)象調(diào)用getClass()方法獲得該對(duì)象的Class實(shí)例
          ? System.out.println(c1.getName());
          ?
          ? Class c2=Class.forName("Point");//使用Class類的靜態(tài)方法forName(),用類的名字獲取一個(gè)Class的是實(shí)例
          ? System.out.println(c2.getName());
          ?
          ? Class c3=Point.class;//運(yùn)用.class的方式來獲取Class實(shí)例
          ? System.out.println(c3.getName());
          ?
          ? Class c4=Integer.TYPE;//封裝類用.TYPE來獲取相應(yīng)的基本數(shù)據(jù)類型的Class實(shí)例。
          ? System.out.println(c4.getName());
          ? */
          ? /*
          ? System.out.println("before new Point()");
          ? new Point();
          ? System.out.println("after new Point()");
          ? Class.forName("Line");
          ? */
          ? /*
          ? if(args.length!=1)
          ? {
          ?? return;
          ? }
          ? try
          ? {
          ?? Class c=Class.forName(args[0]);
          ?? Point pt=(Point)c.newInstance();
          ?? pt.output();
          ? }
          ? catch(Exception e)
          ? {
          ?? e.printStackTrace();
          ? }
          ? */
          ? if(args.length!=1)
          ? {
          ?? return;
          ? }
          ? try
          ? {
          ?? Class c=Class.forName(args[0]);
          ?? Constructor[] cons=c.getDeclaredConstructors();
          ?? /*
          ?? for(int i=0;i<cons.length;i++)
          ?? {
          ??? System.out.println(cons[i]);
          ?? }
          ?? Method[] ms=c.getDeclaredMethods();
          ?? for(int i=0;i<ms.length;i++)
          ?? {
          ??? System.out.println(ms[i]);
          ?? }*/
          ?? Class[] params=cons[0].getParameterTypes();
          ?? Object[] paramValues=new Object[params.length];
          ?? for(int i=0;i<params.length;i++)
          ?? {
          ??? if(params[i].isPrimitive())
          ??? {
          ???? paramValues[i]=new Integer(i+3);
          ??? }
          ?? }
          ?? Object o=cons[0].newInstance(paramValues);
          ?? Method[] ms=c.getDeclaredMethods();
          ?? ms[0].invoke(o,null);
          ? }
          ? catch(Exception e)
          ? {
          ?? e.printStackTrace();
          ? }
          ?
          ?}
          }

          class Point
          {
          ?static
          ?{
          ? System.out.println("Loading Point");
          ?}
          ?int x,y;
          ?void output()
          ?{
          ? System.out.println("x="+x+","+"y="+y);
          ?}
          ?Point(int x,int y)
          ?{
          ? this.x=x;
          ? this.y=y;
          ?}
          }

          class Line
          {
          ?static
          ?{
          ? System.out.println("Loading Line");
          ?}
          }

          主站蜘蛛池模板: 常熟市| 阳江市| 改则县| 宁陕县| 仙桃市| 陆川县| 白城市| 广州市| 时尚| 牡丹江市| 措勤县| 商南县| 禹州市| 乐陵市| 呼和浩特市| 中方县| 乌拉特中旗| 本溪| 工布江达县| 定南县| 墨江| 浦江县| 黄大仙区| 定西市| 河间市| 潼南县| 蒲江县| 五指山市| 渭南市| 岳池县| 岑溪市| 万宁市| 綦江县| 会昌县| 苍山县| 大庆市| 海门市| 新宾| 昭觉县| 昆山市| 渭南市|