`

JAVA封装类和Class类[转]

    博客分类:
  • java
阅读更多

转:http://www.cnblogs.com/mayuechang/articles/1432241.html

 

有时候我们调用方法的时候,它的参数是引用类型,但是我们的数据是基本类型,这个时候我们就要用到下面的封装类
下面的8中基本类型所对应的引用类
基本数据类型           封装类
         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();                 //引用转化为基本类型
                   /*同样其他的基本类型也可以象上面这样转化*/

                   //下面是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

分享到:
评论

相关推荐

    java数据库封装类

    经典java数据库封装类,package com.bjsxt.shopping.util; import java.sql.*; public class DB { public static Connection getConn() { Connection conn = null; try { Class.forName(...

    批量转换json到java类工具

    将json转换为javebean的工具,封装jsonschema2pojo,用户可以修改配置文件json2Beans.json,然后运行Json2JavaBean2.bat直接生成对应类。 能够批量转换json为bean,直接拷贝到项目中使用。 提醒: 需要提前安装java...

    java类加载机制

    类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 ...

    Java开发技术大全(500个源代码).

    示例描述:本章学习对象和类。 accessMember.java 访问成员变量示例 constructNoPara.java 无参数的构造方法 constructWithPara.java 带参数的构造方法 declareDefault.java 缺省访问权限的使用 declarePrivate...

    JAVA入门-Object类、Class类

    什么是Object类?...3.Class类封装一个对象和接口运行时的状态。 4.当装载类时,Class类型的对象自动创建。 5. Class 类没有公共构造方法。 6. Class 对象是在加载类时由Java 虚拟机以及通过调用类

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承、封装、多态的实现原理 容器...

    实验:JAVA类的使用

    这个实验报告中,探究了使用类(class)进行编程的效率和实用性。类是一种重要的编程概念,它能够封装数据和行为,从而让代码更加模块化、可重用和易于维护。通过本次实验,可以深入了解类的创建、继承、封装和多态...

    Java工程师面试复习指南

    Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承封装多态的实现原理 集合类 ...

    Java 基础核心总结 +经典算法大全.rar

    节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...

    Java面向对象封装.pdf

    Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。 封装具体实现步骤 1、声明类的成员变量时,使用private...

    Java中类的概念

    通过类实现自定义数据类型,封装该类型的数据所具有的属性和操作,隐藏实现细节,从而在更高的层次上(类和对象的层次,而非基本数据类型和函数的层次)考虑和操作数据,是计算机程序解决复杂问题的一种重要的思维...

    JAVA 工具类 toolkit

    对常用的处理封装 JsonResult、PageBean、exception、excel、FtpHelper、HttpHelper、AESHelper、DESHelper、RSAHelper、ChineseUtil、ClassUtil、CollectionHelper、ConvertUtil、DateUtil、FileUtil、ImageUtil、...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java继承封装多态

    java 继承、多态、向上向下数据转换。

    eclipse中查看class文件

    eclipse中查看class文件,并且附带详细的使用说明。对java开发爱好者来说是不错的帮手。

    《java面向对象程序设计-继承和多态》教案.doc

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics