V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
choice4
V2EX  ›  Java

低端水嘛。。大家还是来看一眼 这个对象比较问题

  •  
  •   choice4 · 2018-01-18 19:51:01 +08:00 · 2267 次点击
    这是一个创建于 2501 天前的主题,其中的信息可能已经有所发展或是发生改变。
    代码:
    System.out.println("购物车的总金额" + c.getTotalPrice());
    System.out.println(i1.hashCode()+" "+i3.hashCode());
    System.out.println(i1);
    System.out.println(i3);
    System.out.println(i1 == i3);
    System.out.println(i1.equals(i3));


    这个 i1 i3 对象的类重写了 hashcode 和 equals 没有重写 toString

    控制台显示如下:
    购物车的总金额 1400.0
    789159489 789159489
    entity.Items@2f099e41
    entity.Items@2f099e41
    false
    true



    这个 false 有点懵 基础差了。。分别打印 i1 和 i3 显示出来的也都是一样的 但是==就是 false 所以说打印直接打印对象输出结果不能算是内存地址吗 这个 false 是根据什么比较的呢 以前的认识就是==比较地址 直接打印对象不就是地址吗??打印结果一样 判等为啥就是 false 呢
    4 条回复    2018-01-20 16:47:03 +08:00
    choice4
        1
    choice4  
    OP
       2018-01-18 19:58:04 +08:00
    是因为重写了 hashcode()方法。。。。。。复杂
    kiddult
        2
    kiddult  
       2018-01-19 12:17:52 +08:00
    == 对比的是 JVM 里面的引用,和 hashCode、equals 之类没关系; toString 那个是因为默认采用 Object 的实现,所以两个 toString 结果是一样的

    public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    choice4
        3
    choice4  
    OP
       2018-01-19 14:36:14 +08:00
    @kiddult 恩这个已经搞明白了 大哥我多问一句 那个为什么我的数据库连接运行 application 程序可以连通数据库,可以拿到数据 但是如果在 jsp 页面中调用就会抛出 ClassNotFound 异常啊
    http://tieba.baidu.com/photo/p?kw=java&ie=utf-8&flux=1&tid=5521207338&pic_id=32f78f35e5dde711343d9c2cacefce1b9f166197&pn=1&fp=2&see_lz=1#!/pidc7314c2309f79052c09e98e407f3d7ca79cbd5f9/pn1
    kiddult
        4
    kiddult  
       2018-01-20 16:47:03 +08:00
    @choice4 你可以看看又没有引入 mysql 的驱动包,不过总起来不推荐在 jsp 里面写逻辑,你把 jsp 当成模板语言,然后配合 spring mvc 会好一些
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:58 · PVG 16:58 · LAX 00:58 · JFK 03:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.