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
基本类型:
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的基本类型就不在会为判断对象而发愁。
分享到:
相关推荐
判断对象类型,目前只有基础变量,和String变量,以后会更好的完善这小功能
leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...
而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,...
Java中的Character类是一个包装类,用于封装一个基本数据类型char的值。它提供了一些静态方法来操作字符,例如转换大小写、判断字符类型等。 二、Character类有哪些常用的静态方法? 1. isLetter(char c):检查字符...
010303_【第3章:Java基础程序设计】_判断与循环语句笔记.pdf 010401_【第4章:数组与方法】_数组的定义及使用笔记.pdf 010402_【第4章:数组与方法】_方法的声明及使用笔记.pdf 010403_【第4章:数组与方法】_数组...
包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback ...
基本类型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 ...
“不能使用过时方法”三条规则,对比上一版本V1.0.6,增加了“禁止使用构造方法BigDecimal(double)的方式把double值转化为BigDecimal对象”,“浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能...
包装类 97 toString( )方法 100 内容总结 101 独立实践 102 第七章:类的高级特征 103 学习目标 103 static关键字 104 final关键字 106 内部类 106 实例分析 110 抽象类,接口 115 内容总结 120 独立实践 121 第八章...
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
10.11.1不能使用基本类型326 10.11.2不能使用泛型类异常326 10.11.3不能使用泛型数组327 10.11.4不能实例化参数类型对象..327 10.12本章小结328 第11章集合329 11.1集合接口与抽象类329 11.1.1Collection接口...
5.3 包装类的使用 114 实例093 将字符串转换成整数 114 实例094 整数进制转换器 115 实例095 查看数字的取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型的比较 118 5.4 面向对象的特征 119 实例098 ...
进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...
•如果希望获得包装类对象中包装的基本类型变量,则可以使用包装类提供的XxxValue()实例方法。 自动装箱与自动拆箱 •JDk还提供了自动装箱和自动拆箱。自动装箱就是把一个基本类型的变量直接赋给对应的...
{4.10}包装类}{87}{section.4.10} {4.11}集合的复制}{88}{section.4.11} {4.12}集合的同步化}{89}{section.4.12} {4.13}集合转换为数组}{89}{section.4.13} {4.14}数组转换为集合}{89}{section.4.14} {4.15}...
10.4基本数据类型的包装类 10.4.1认识包装类 10.4.2通过包装类进行数据转换 10.5认识Java集合 10.5.1为什么需要集合 10.5.2Java中的集合 10.6使用一维集合 10.6.1认识一维集合 10.6.2使用List集合 10.6.3...