`
popwang
  • 浏览: 58909 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java基本类型判断

阅读更多

java判断是否基本类型,基本类型与对应的包装类
2011-03-02 12:09

public class Test{
public static void main(String[] args) throws Exception {
  System.out.println((char)65);
        System.out.println(isWrapClass(Long.class));
        System.out.println(isWrapClass(Integer.class));
        System.out.println(isWrapClass(String.class));
        System.out.println(isWrapClass(Test.class));
    }

    public static boolean isWrapClass(Class clz) {
        try {
           return ((Class) clz.getField("TYPE").get(null)).isPrimitive();
        } catch (Exception e) {
            return false;
        }
    }
}


Java的所有类总称Class,大写C.



基本类型:

Java的基本类型有八种:int, double, float, long, short, boolean, byte, char, void.

基本类型属于Class的一个子集。

因此:

.isPrimitive()是用来判断是否是基本类型的:void.isPrimitive() //true;

.class用来返回该类的Class对象的实例:int.class == intclass //基本类型

                                     int.class.isPrimitive //true

                                     Integer.class == Integer //包装类

                                     Integer.class.isPrimitive //false

.TYPE是返回基本类型的Class实例,所以:int.class == Integer.TYPE //true;

除了int Integer,类似的有 float Float; double Double; string String等。

基本类存储在栈中,包装类村住在堆中,栈是LIFO(后进先出),基本类的存取速度更快。

JAVA 虚机自动完成基本类与包装类的转换

基本类型的包装类都采用final修饰方法,因此无法继承它们扩展的新类,也无法重写它们的方法。



包装类:

包装类是基本类的扩展

int i=2, Integer i = new Integer(2); 其实这个过程是由自动转换的,定义了int i=2就不用关心将其转换为包装类的过程。这就是为什么基本类型不需要new,例如 int i = new int() i =2;是多余的。

此外,HashMap ArrayList等不能将基本类加入其中,而只能加入包装类。一个典型的实例:

Map<int, Object> testMap = new HashMap<int, Object>();就是错误的

而应该把int换成Integer。



最后,如何判断一个对象所属的类型:

常见的一个典型错误是 object.getClass.isPrimitive()
许多人指望靠此判断object是不是一个数字或者布尔。其实这样返回的是该对象的类型,如java.lang.double,而非类型的基本类型,因此是错误的。

正确的步骤是:



object instanceof String

                  Number

                  Boolean

                  Character

                  null

搞懂java的基本类型就不在会为判断对象而发愁。

 

 

 

package isAssignableForm;

public class start {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Integer a = 2;
        System.out.println(a instanceof Number);                         //t
        System.out.println(Object.class.isAssignableFrom(Number.class)); //t
        System.out.println(Integer.TYPE.isPrimitive());                  //t
        System.out.println(Integer.class.isPrimitive());                 //f
        System.out.println(int.class);                                   //int
        System.out.println(char.class);                                  //char
        System.out.println(int[].class);                                 //class [I
        System.out.println(char[].class);                                //class [C
        System.out.println(new int[0].getClass());                       //class [I
        System.out.println(new int[0].getClass().getComponentType());    //int
    }

}

分享到:
评论

相关推荐

    DataUtil--数据工具类--数据类型判断和比较

    DataUtil--数据工具类--数据类型判断和比较,包括判断字符串是否为空,判断字符串不为空,判断是否为数字,判断是否为整型数字,判断是否为日期字符串(格式如:2014-04-01),判断是否为时间字符串(格式如:2014-...

    Java基本数据类型与类型转换实例分析

    主要介绍了Java基本数据类型与类型转换,结合实例形式分析了Java基本数据类型分类、用法,类型转换及相关操作注意事项,需要的朋友可以参考下

    java源码包---java 源码 大量 实例

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    Java的布尔类型基本介绍

    主要介绍了Java的布尔类型,是Java入门学习中的基础知识,需要的朋友可以参考下

    最新JAVA编程题全集 50题及答案

    * JAVA 中的基本数据类型和运算符 程序 2:判断素数 * 素数是一种大于 1 的自然数,除了 1 和其本身外,不能被其他自然数整除。 * 在 JAVA 中,可以使用循环和条件语句来判断一个数是否为素数。 * 本程序使用循环...

    判断类型封装类

    判断对象类型,目前只有基础变量,和String变量,以后会更好的完善这小功能

    java源码包4

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

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

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    java源码包3

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

    02Java的基本类型1

    第一个 if 语句,也就是直接判断“吃过饭没”,在它 第二个 if 语句,也就是判断“吃过饭没”和 true 是否相等,在它成立的情况下,代码会打印“真吃 第二

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

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    Java的文件处理相关工具类

    提供java中对文件类的各种基本操作,主要包括获取文件的后缀名称,读取文件内容,写入文件内容,拷贝文件,将文件转换为二进制数组等操作,转换为Blob格式类等操作

    EncodingDetect.java

    支持java解析判断文本类型,涵盖全面,基本支持各种类型判断。 编码转换之前进行类型判断,方便快捷高效

    java源码包2

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

    Java开发详解.zip

    010301_【第3章:Java基础程序设计】_Java数据类型笔记.pdf 010302_【第3章:Java基础程序设计】_运算符、表达式与语句笔记.pdf 010303_【第3章:Java基础程序设计】_判断与循环语句笔记.pdf 010401_【第4章:数组与...

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

    leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...

    java实现水果超市管理系统.doc

    1. Java 语言基本语法:变量、数据类型、运算符、控制结构、函数等。 2. 面向对象编程思想:类、对象、继承、多态等。 3. 构造函数和 setter、getter 方法的使用。 4. ArrayList 的使用和常见方法。 5. switch 语句...

    Java比较两个mysql数据库表结构的差异

    这个主要比对的是表,表中列的基本信息比较,比较是否存在是否类型一致等,对于函数存储过程则只是简单的比较是否存在,内容没有比对。如果谁感兴趣可以完善该比对功能。 JAVA代码,不复杂,看看就明白,都是采用...

    java程序设计教程 第六版 课后习题答案

    本资源为 Java 程序设计教程第六版课后习题答案的解析,涵盖了Java语言的基本概念和编程技术。通过对习题的解析,我们可以了解Java语言的基本语法结构、变量的声明和使用、运算符的使用、控制流语句的使用、方法的...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

Global site tag (gtag.js) - Google Analytics