一、基本类型与包装类判断
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的基本类型就不在会为判断对象而发愁。
二、如何判断一个类型是Java本身的类型,还是用户自定义的类型
public class BugMeNot { public static boolean isJavaClass(Class<?> clz) { return clz != null && clz.getClassLoader() == null; } public static void main(String... args) { System.out.println(isJavaClass(Integer.class)); // true System.out.println(isJavaClass(BugMeNot.class)); // false } }
相关推荐
Apache Commons Lang是一个专门用于处理Java语言级别的特性的库,它提供了大量的静态方法来增强Java的基本类型、字符串、数组、日期时间等操作。以下是一些Lang库的关键知识点: 1. **字符串处理**:Lang库中的`...
- **基本类型包装类**:Java为每个基本类型提供了对应的包装类,如Integer、Double、Boolean等。这些类提供了额外的特性,如比较、格式化输出等。 - **自动装箱/拆箱**:Java 5引入了这一特性,允许在基本类型和...
leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...
包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback ...
8. 基本数据类型与包装类:在Java中,除了八种基本数据类型,还存在与之对应的包装类,如Integer、Double等。它们是不可变的,并且提供了各种有用的方法来处理对应的基本数据类型。 9. 集合框架:Java集合框架包括...
- **自动装箱/拆箱**:允许自动在基本类型和对应的包装类之间进行转换。 - **静态导入**:可以静态导入类中的静态成员,简化代码。 - **可变参数**:方法可以接受任意数量的同类型参数。 以上是Java的基础知识和...
- **自动装箱**:在 Java 5.0 中引入,简化了从基本数据类型到包装类的转换过程。 - **自动拆箱**:与自动装箱相反的过程,即从包装类对象自动转换为基本数据类型。 ### 六、String 类型 #### 12. String 类型 - `...
- 包装类的作用:将基本类型包装为对象。 - 常用包装类:Integer、Double等。 - **匿名内部类** - 匿名内部类的定义:没有名称的内部类。 - 匿名内部类的应用场景:实现接口或继承抽象类。 #### 第七章:异常的...
Java经典编程源码例程,可以做为你的学习设计参考。...第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1
Java的八个基本数据类型(byte、short、int、long、float、double、char、boolean)各自有对应的包装类,如Integer、Long、Float等。包装类除了能将基本类型和对象之间进行转换外,还提供了其他功能,如比较、格式化...
- **protected**:在当前类及其子类以及同一包中的其他类中可见。 - 默认:在同一个包内的其他类可见。 **6.7 构造方法** - 用于初始化对象。 - 方法名与类名相同。 - 没有返回类型。 **6.8 数据和方法的隐藏——...
20. **包装类**:了解Integer,Double等包装类的作用,以及它们与原始数据类型之间的自动装箱拆箱。 通过解答这50道Java基础编程题,初学者将能够系统地学习和实践这些关键概念,为今后深入学习Java打下坚实基础。...
#### Java包装类 Java提供了对应于每种基本数据类型的包装类,例如:`Integer`、`Float`、`Character`等。 #### 内部类 内部类可以在外部类的方法内部定义,也可以在外部类的类体内定义。匿名内部类是内部类的一...
此外,Java中的自动装箱和拆箱机制使得基本类型和其对应的包装类之间转换更加便捷。 总的来说,理解标识符、关键字和数据类型是学习Java或其他任何编程语言的第一步。它们构成了程序的基本构造块,影响着代码的...
- 封装类:学习对应的包装类,如Integer、Double等,以及它们提供的额外功能,如自动装箱和拆箱。 3. 控制结构 - 条件语句:掌握if-else、switch-case等控制结构,进行条件判断。 - 循环:理解for、while、do-...
包装类如Integer将基本类型转换为对象。Date类处理日期和时间,Calendar是抽象类,不可直接实例化。DateFormat类用于日期格式化,SimpleDateFormat是具体实现。Java语言具有高级特性,如简单性、安全性和面向对象。...
Java提供了包装类将基本数据类型封装成对象,方便进行更多的操作。 **示例题目的选项解析:** - `Integer.parseInt()`将字符串转换为`int`类型。 - `Integer.valueOf()`创建一个`Integer`对象。 因此,正确答案是D...
4. Java核心类:讨论了字符串和编码(StringBuilder、StringJoiner)、包装类型(如BigInteger、BigDecimal)、JavaBean、枚举类以及常用工具类。 5. 异常处理:包括Java的异常捕获机制、自定义异常、使用断言以及...
- **封装类**:为基本类型提供包装,支持更复杂的操作。 - **内部类**:一种特殊的类,嵌套在另一个类的内部,可以访问外部类的成员。 - **分类**:成员内部类、局部内部类、静态内部类、匿名内部类。 - **集合**:...
- **基本数据类型和包装类**:Java为每种基本数据类型提供了一个对应的包装类,例如`Integer`对应`int`。 - **`Integer`与`int`的区别**:`Integer`是对象类型,支持更多方法;`int`是基本数据类型。 - **`String`类...