`

Java基本类型与对象类型的区别导致的Bug剖析

 
阅读更多

一个很简单的例子,原文地址:http://www.taobaotest.com/blogs/2544

======================================原文开始===============================

本文中所提到的基本类型是指类似 int,long等,而对象类型是指Integer,Long等。

基本类型和对象类型第一个最大的不同在于初始化的值不同。int 初始化为0,Integer 为null。在一个线上产品故障的排查过程中发现根本原因在于开发同学把数据库DO对象的一个字段从int 改成了Integer引起的,因为int 类型可以正常的初始化,而Integer 对象的时候不能正常插入,导致了线上产品故障。

正是由于初始化的值的不同,也导致了在进行逻辑比较的时候,对象类型很容易出现空指针异常:

基本类型可以直接进行逻辑判断:

int num;

if( num >0 ){

//todo

}

这样的代码不会有空指针的异常,但是如果是如下代码:

Integer num;

if( num >0 ){

//todo

}

就会有空指针异常。这种异常特别容易出现在web的参数处理上:

例如:

public class MyTest {

    @Autowired     private HttpServletResponse response;

    public void execute(@Param("pageSize") Integer pageSize) throws Exception {
       //todo
       //这里容易空指针异常
       if( pageSize<=0 ){
          pageSize = 1;
       }
       //todo
    }
}

第二个不同在于基本类型没有可执行的方法,而对象类型支持很多封装的方法,例如Integer 对象 可以使用toString()的方法。

第三个不同在于基本类型不能作为List或者Map的类型,例如:

List<int>  numList = new ArrayList<int>();  //这样是不可以的。

 

======================================原文结束===============================

以下是自己的测试代码:

public class NullTest {
	
	public static Integer test;
	public static void main(String[] args) {	
		System.out.println(test == null);
		System.out.println(test > 0);

	}

}

 输出:

true
Exception in thread "main" java.lang.NullPointerException
	at com.ssgx.ssa.test.NullTest.main(NullTest.java:8)

 

分享到:
评论

相关推荐

    java类型BUG总结

    ### Java类型BUG总结 #### 一、糟糕的命名习惯 **问题描述:** 糟糕的命名习惯会导致代码可读性差,难以维护。例如,使用`i`, `ii`, `j`, `k`作为循环变量,这虽然在某些情况下是常见的做法,但对于变量的功能描述...

    Java Bug模式详解 pdf版

    书中深入剖析了Java编程中常见的bug模式,通过实例解析,让读者能够识别并预防这些模式,从而减少程序中的错误,提高软件的稳定性和可靠性。 在Java编程中,bug模式通常指的是那些反复出现的、容易导致程序出错的...

    JAVA代码BUG分析

    《Java.Bug模式详解.pdf》可能会涵盖一些经典的错误模式,比如空指针异常(NullPointerException)、数组越界(ArrayIndexOutOfBoundsException)、类型转换异常(ClassCastException)等。这些错误模式的分析能帮助...

    Java Bug模式详解.rar

    Java Bug模式详解主要涵盖的是Java编程中常见的错误和陷阱,这些错误往往会导致程序运行异常或者性能下降。在软件开发过程中,理解和避免这些Bug模式对于提高代码质量和效率至关重要。本资源包含一本PDF电子书《Java...

    java java查bug 查bug bug 查错 源码

    Java编程语言在软件开发中占据着重要地位,其强大的类库和面向对象的特性使得它在各种项目中广泛应用。然而,随着代码量的增加,错误和bug也难以避免。"查bug"和"查错"是每个Java开发者必备的技能,而深入理解源码则...

    JAVA常见异常BUG

    ### JAVA常见异常BUG详解 #### 一、Java.lang.ArrayStoreException **定义**: `java.lang.ArrayStoreException` 是一种运行时异常(RuntimeException),当尝试向一个特定类型的对象数组存储不兼容类型的对象时...

    JAVA.BUG模式详解

    在Java编程中,"BUG模式"通常指的是程序员在编写代码时容易犯的一些常见错误或陷阱,这些错误可能导致程序运行不正常、性能下降甚至系统崩溃。理解并避免这些BUG模式是提高Java程序质量和效率的关键。本篇文章将深入...

    java Bug模式详解

    java Bug模式详解

    Bug模式 - Bug Pattern In Java

    在编程世界中,Java是一种广泛使用的面向对象的语言,它的健壮性和安全性深受开发者喜爱。然而,即便是这样的语言,程序员也可能由于一些常见的编程习惯或错误理解而导致各种问题,这些错误模式通常被称为“Bug模式...

    JAVA基本功能画板无Bug

    【JAVA基本功能画板无Bug】是一个JAVA编程项目,旨在实现一个功能丰富的画板应用。这个项目涵盖了多种图形绘制工具,如铅笔、橡皮、喷枪、直线、多边形、矩形、圆角矩形和椭圆,充分展示了JAVA在图形用户界面(GUI)...

    java bug系统

    【Java Bug系统】是一个专为跟踪和管理软件开发过程中出现的错误或问题的系统,它通常用于记录、分类、优先级排序以及修复这些bug。在Java编程语言中,开发这样的系统意味着利用Java的强大特性和丰富的类库来实现...

    java框架bug处理大全

    java 框架 bug处理 大全

    解决Java实现飞行棋Bug

    在Java编程领域,飞行棋是一种常见的游戏开发项目,它能帮助初学者理解基本的游戏逻辑、图形界面设计以及事件处理。本篇文章将详细讨论如何解决在Java实现飞行棋时遇到的常见Bug,确保游戏能够顺利运行。 首先,...

    Java Bug 模式详解

    Java Bug模式详解是一种深入理解和解决Java编程中常见错误和陷阱的方法。这些模式通常源于语言特性、API使用不当或对编程规范的误解。本篇将详细探讨一些常见的Java Bug模式,并提供预防和修复策略。 1. **空指针...

    Java面向对象教程 应用软件工程原理编程

    Java面向对象教程是深入理解Java编程的关键,它涵盖了软件工程中的基本原则,并将其应用于实际编程实践。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它基于“对象”的概念,这些对象封装了...

    Java.Bug模式详解

    《Java Bug模式详解》这本书是Java开发者们的重要参考资料,它深入剖析了在编程过程中常见的错误模式,即“Bug模式”,并提供了详细的解决策略。Bug模式是程序员在编码时容易犯的错误,理解并掌握这些模式有助于提升...

    基于JAVA语言开发的bug管理系统

    JAVA语言以其强大的跨平台性、丰富的类库和面向对象的特性,成为开发Bug管理系统的首选语言之一。JAVA的稳定性和安全性确保了系统运行的可靠性,其面向对象的设计思想则便于实现模块化和可维护性,使得Bug管理流程...

    java的BUG集锦以及初学者上级练习素材全套.zip

    首先,我们来探讨Java中的BUG类型。常见的错误大致可以分为语法错误、运行时错误和逻辑错误。语法错误,也称为编译错误,是程序员在编写代码时违反了Java语法规则,这些错误通常在编译阶段就能被检测出来。运行时...

    使用Java编写不含任何BUG的计算器

    Java是一种面向对象的编程语言,它的类和对象机制是核心。对于这个计算器,我们可以创建一个名为`Calculator`的类,其中包含各种方法来执行不同的计算操作。 ```java public class Calculator { // ... } ``` ...

Global site tag (gtag.js) - Google Analytics