=============================封裝類===============
針對八種基本數據類型定義的相應的引用類型-封裝類(包裝類,包裹類)
基本數據類型????????? 封裝類
?boolean?????????????? Boolean
?byte????????????????? Byte
?short???????????????? Short
?int?????????????????? Integer
?long????????????????? Long
?char????????????????? Character
?float???????????????? Float
?double??????????????? Double
所有的封狀類都是一個只讀類(不能修改的).針對沒個基本類型我們只能建立一個這讀的。
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對象轉換為String類型
? System.out.println("str="+str);
?
? String str1="123";
? System.out.println(Integer.valueOf(str1));? //把String類型轉換為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中,每個class都有一個相應的Class對象。也就是說,當我們編寫一個類,編譯完成后,在生成
?? 的.class文件中,就會產生一個Class對象,用于表示這個類的類型信息。
2> 獲取Class實例的方法有三種:
?? <1>利用對象調用getClass()方法獲得該對象的Class實例。
?? <2>使用Class類的靜態方法forName(),用類的名字獲取一個Class的是實例。
?? <3>運用.class的方式來獲取Class實例,對于基本數據類型的封裝類,還可以用.TYPE來獲取相應的
????? 基本數據類型的Class實例。
?? <4>在運行期間,如果我們要產生某個類的對象,JAVA虛擬機(JVM)會檢查該類型的Class對象是否被
????? 加載,如果沒有加載,JVM會根據類的名稱找到.class文件并加載它。一旦某個類型的Class對象已
????? 經被加載到內存,就可以用它來產生該類型所有的對象。
?? <5>newInstance()調用類中缺省的構造方法。(好處是我們在不知道類的名字的情況下去創造一個實例)
import java.lang.reflect.*;?????? //子包必須手動導入
class ClassTest
{
?public static void main(String[] args)//throws Exception
?{
? /*
? Point pt=new Point();?????????????
? Class c1=pt.getClass();//利用對象調用getClass()方法獲得該對象的Class實例
? System.out.println(c1.getName());
?
? Class c2=Class.forName("Point");//使用Class類的靜態方法forName(),用類的名字獲取一個Class的是實例
? System.out.println(c2.getName());
?
? Class c3=Point.class;//運用.class的方式來獲取Class實例
? System.out.println(c3.getName());
?
? Class c4=Integer.TYPE;//封裝類用.TYPE來獲取相應的基本數據類型的Class實例。
? 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");
?}
}