JAVA封装

有时候我们调用方法的时候,它的参数是引用类型,但是我们的数据是基本类型,这个时候我们就要用到下面的封装类 下面的8中基本类型所对应的引用类 基本数据类型

      封装类          boolean     byte    short  int long     char         float     double    

class Test {            public static void main(String[] args)            {                    int i=3;                    Integer in=new Integer(i);           //(构造的时候传递一个基本类型)基本类型转化为引用类型                    int j=in.intValue();                 //引用转化为基本类型                    /*同样其他的基本类型也可以象上面这样转化*/

                   //下面是String和Integer对象之间的转化                    Integer in1=new Integer(i);                    String str=in1.toString();                    Integer in2=Integer.valueOf(str);    

                   //比较特殊的是Boolen类型,它么没有转化为String类型。                   } } 注意: 所有的封装类都是只读的,当我们建立一个和基本类型相对应的封装类的对象的时候,那么它的内容是不能修改。 每个基本类型只能建立一个只读的封装类对象。

在java中,每个class都有一个相应的Class对象,当编写好一个类,编译完成后,在生成的.class文件中,就产生一个class对象,用来表示这个类的类型信息。获得Class实例的三中方式: 1.利用对象调用getClass()方法获取该对象的Class实例 2.使用Class的静态方法forName(),用类的名字获取一个Class实例 3.运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例

calss ClassTest {            public static void main(String[] args)            {                    /*                    //利用对象调用getClass()方法获取该对象的Class实例                    Point pt=new Point();                                    Class c1=pt.getClass();                    System.out.println(c1.getName());                   //结果:Point                                     //使用Class的静态方法forName(),用类的名字获取一个Class实例                    try                    {                            Class c2=Class.forName("Point");                            System.out.println(c2.getName());           //结果:Point                    }                    catch(Exception e)                    {                            e.printStackTrace();                    }

                   //运用.calss的方式获取Class实例(类)                    Class c3=Point.calss;                    System.out.println(c3.getName());                   //结果:Point

                   //运用.calss的方式获取Class实例(基本类型)                    Class c4=int.calss;                    System.out.println(c4.getName());                   //结果:int

                   //运用.calss的方式获取Class实例(基本数据类型的封装类)                    Class c5=Integer.TYPE;                    System.out.println(c5.getName());                   //结果:int                                     Class c6=Integer.class;                    System.out.println(c6.getName());                   //结果:java.lang.Integer                    */                                     //以下结果是:     before new Point()                                    loading point                                    after new Point()                                    loading Line                            //当new Point()的时候加载这个类,用forName构造实例的时候也加载该类。                    System.out.println("before new Point()");                    new Point();                    System.out.println("after new Point()");

                   try                    {                            Class.forName("Line");                    }catch(Exception e)                    {                            e.printStackTrace();                    }                             } } class Point() {            static            {                    System.out.println("loading point");            }            int x,y; } class Line {            static            {                    System.out.println("loading Line");            } }

在运行期间,如果我们要产生某个类的对象,java虚拟机会检测该类型的Class对象是否已被加载。如果没有加载,java虚拟机会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已经被加载到内存,就可以用它来产生该类型的所有对象。 newInstance()调用内中缺省的构造方法。

newInstance()调用类中缺省的构造方法,如果要实例的对象中有了自己定义的构造方法(除重写的和默认构造方法相同的构造方法外) 创建此 Class 对象所表示的类的一个新实例 class ClassTest {           public static void main(String[] args)           {                   if(args.length!=1)                   {                           System.out.println("args.length!=1");                           return;                   }                   try                   {                           Class c=Class.forName(args[0]);                           Point pt=(Point)c.newInstance();                           pt.output();                   }catch(Exception e)                   {                           e.printStackTrace();                   }           } } class Point {           int x;           int y;           static           {                   System.out.println("Loading point");           }           void output()           {                   System.out.println("x="+x+",y="+y);           } } 当我们在命令提示符下面编译好该类之后,输入java ClassTest Point的时候,此时会输出Loading point和x=0,y=0

posted @ 2016-07-07 22:28  大王叫我来巡园  阅读(127)  评论(0)    收藏  举报