`
woshixushigang
  • 浏览: 578004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Integer值比较误区

 
阅读更多

 

例子:

Integer i1 = 12;

Integer i2 = 12;

这时候 i1 i2 是同一个对象,就是引用是一样的地址

而:

Integer i1 = 133;

Integer i2 = 133;

这时候 i1 i2 就不是同一个对象!

原因 Integer 在创建一个对象的时候,如果值小于 1b(-128~127) 那么,会将值放入缓冲池,如果下次再创建这个值 Integer 对象,则直接用这个缓冲池中的引用了,如果大于这个值,则创建新的对象 .

这个就是 享元模式 (flyweight)

 

  /**
     * 删除对应账户下的荣誉信息并进入荣誉页面
     * 
     * @param id
     * @return
     */
    @RequestMapping(value = "/delete", method = RequestMethod.GET)
    public String delete(@RequestParam(value = "id", required = true) int id, Model model) {
        /* 权限验证 */
        if (this.user.get().getUid() <= 0) {
            return "redirect:/error/index?code=auth.unlogin";
        }
        UDBUserDao userDao = AppContext.getBean("userDao", UDBUserDao.class);

        List<ExtInfo> honors = userDao.getListExtinfoForAccount(this.user.get().getUid());
        // 仅能删除自己名下的荣誉
        // TODO 要换掉物理删除的逻辑,使用逻辑删除
        for (ExtInfo honor : honors) {
            if (honor.getId() == id) {
                userDao.deleteAccountUser(id);
                break;
            }
        }
        this.model.get().addAttribute("extinfolist", userDao.getListExtinfoForAccount(this.user.get().getUid()));
        this.model.get().addAttribute("title", "账号设置_" + CMConfig.getProperty("default.title"));
        return "redirect:/account/honor";
    }

如果传得参数id 类型为Integer 并且id >= 128,那么 honor.getId()就不等于id。

如果传得参数id 类型为int ,那么 honor.getId()就等于id。

 

分享到:
评论

相关推荐

    Java编程中常见的坑

    这意味着在这个范围内,对于相同值的`Integer`对象,使用`==`操作符比较将返回`true`。但是,如果超过这个范围,则会创建新的`Integer`实例,此时即使数值相同,`==`也会返回`false`。 **示例代码**: ```java ...

    java中的==和equals()方法1

    但是,很多类(如String、Integer等)都重写了`equals()`方法,使其比较对象的值或内容。例如,String类的`equals()`方法会比较两个字符串的字符序列是否相同: ```java String s1 = new String("Hello"); String ...

    Java引用变量传递诡异之处

    本文将通过两个具体的例子来探讨Java中引用变量传递时的一些常见误区,并对这些误区进行详细的解释。 #### 示例一:基本类型包装类的传递 首先,我们来看第一个例子: ```java public class Test1 { public ...

    java程序中容易出错的地方

    在Java编程中,即便是经验丰富的开发人员也难免会遇到一些常见的陷阱和误区。本文将深入探讨这些易错点,帮助开发者更好地理解这些问题,并学会如何避免它们。 #### 1. 类加载问题 Java类加载机制是Java运行时环境...

    Java零基础-参数传递-2.md

    作为一门广泛使用的编程语言,Java提供了多种参数传递的方式,这其中包括了基本类型的值传递以及引用类型的地址传递。同时,文章还涵盖了可变参数列表(varargs)的使用方法以及如何在方法中正确地定义和使用返回值...

    2021-2022计算机二级等级考试试题及答案No.19433.docx

    - **误区解析**:删除一个应用程序的快捷方式并不会删除相应的程序文件。快捷方式只是指向程序文件的一个链接,删除链接不会影响原文件的存在。 ### 3. Java 字符串分割 - **程序示例**:考虑Java代码片段`String ...

    memory-efficient-java-tutorial

    这是因为 `Integer` 是一个包装类,它不仅包含了 `int` 值,还包含了一些额外的元数据。 2. **字符串对象的大小**: - 在32位平台上,一个包含8个字符的 `String` 对象实际上占用的空间远大于8个字节。这是因为 `...

    Java面试错误汇总.txt

    - **对象状态**:对象的状态是指其内部变量的值。理解对象的状态对于调试和设计多线程程序至关重要。 - **同步机制**:为了确保多线程环境下的数据一致性,Java提供了多种同步机制,如`synchronized`关键字、`...

    计算机程序设计基础visual basic 版 上机练习答案

    它支持变量声明、常量定义、数据类型(如Integer、Double、String等)、流程控制语句(If...Then...Else、For...Next、While...Wend等)以及函数和过程。 2. **对象和控件**:VB的核心是面向对象编程,包括窗体...

    Delphi7编程

    1. 类型系统:了解基本数据类型(如Integer、Boolean、Char、String等)、引用类型(如Objects和Interfaces)以及枚举和记录类型。 2. 控制结构:掌握流程控制语句,如条件判断(If...Then...Else)、循环(For、...

    Java项目开发代码Review常见问题实例.doc

    - 对null值的操作:在访问对象属性或调用方法前检查是否为null。 **二.3.2 格式化数字错误** - 使用不正确的格式字符串:在输出数字时,确保格式字符串与数字类型匹配。 - 数值溢出:处理大整数时,注意Integer和...

    VB语句大全

    - `ByVal`:以值传递的方式将参数传入过程,这样对参数的任何改变都不会影响原始数据。 - `ByRef`:默认的参数传递方式,以引用的方式传递参数,即在过程中对参数的修改会影响到原始数据。 **3.4 示例代码** - **...

    JAVA面试题-代码查错

    例如,将`Integer`对象强制转换为`int`,而对象实际值为`null`。 2. **空指针异常** (`NullPointerException`):这是Java中最常见的错误之一,发生在尝试访问或操作`null`引用的对象时。确保在使用对象前检查其是否...

    mysql容易出错的地方

    ### MySQL易犯错误详解 #### 1. 使用 MyISAM 而不是 InnoDB MySQL 提供了多种存储引擎,其中最常用的两...以上总结了 MySQL 使用过程中常见的误区和优化建议,遵循这些指导原则有助于构建更加稳定高效的数据库系统。

    php中的三元运算符使用说明

    在三元运算符的条件判断中,如果比较操作的结果不是布尔类型(boolean),PHP会尝试将其转换为布尔值。例如,如果 `$a` 是一个整型(integer)并且等于1,则 `$a==1` 的结果是 `true`,因此三元运算符会返回第一个...

    100家大公司java笔试题汇总

    - EL 表达式用于获取JavaBean属性值、执行算术运算等。 **具体解释:** - 选项 C 表示 **`isELIgnored="boolean"` 决定是否支持EL表达式**,这是正确的。当设置为 `true` 时,EL表达式将被忽略,不会被解析和执行。...

    2021-2022计算机二级等级考试试题及答案No.10856.docx

    正确的SQL语句用于创建带有关键字段“ID”的“学生”表是:`CREATE TABLE 学生 ([ID] integer, [姓名] text, [出生] date, CONSTRAINT [indexl] PRIMARY KEY ([ID]))`。该知识点涉及SQL语法的具体应用,特别是表创建...

    2021-2022计算机二级等级考试试题及答案No.10878.docx

    - **知识点概述**:在Java中,方法的返回值类型由方法定义决定,如`boolean`、`int`、`String`或`Integer`等。 - **类型定义**:正确指定方法的返回类型是实现预期功能的前提。 ### 25. JavaScript中的注释 - **...

    2024春招面试真题-鑫合易家java初级试卷1-题目.docx

    - **误区澄清**:构造方法不能像普通方法那样被对象直接调用,而是在创建新对象时由Java虚拟机自动调用。 - **应用场景**:构造方法常用于设置对象的初始状态,比如初始化对象所需的属性值。 #### 3. Java虚拟机...

Global site tag (gtag.js) - Google Analytics