• javaSE一些实习问题


    javaSE一些实习问题

    为什么实现equals的同时要实现hashcode()?

    hashCode()在散列表中才有用,在其它情况下没用。在散列表中 hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置。hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

    因为如果只想实现了equals方法,在某种情况下达不到预期,比如说再hashmap中,我们使用一个没有覆盖hashcode的对象作为key,那么我们准备两个对象,他们euqals的结果为true,用一个对象存值比如说map.put(key1,value),那么使用另一个对象去取值map.get(key2)取出来的值就会使null,因为hashmap中的key是通过hashcode获取hash值的,获取的hash值和value存的地址相关联的,这就达不到预期的效果,所以才规定实现equals的同时要实现hashcode并且equals相等hashcode也一定要相等。

    为什么java中只有值传递?

    首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。 它用来描述各种程序设计语言(不只是 Java)中方法参数传递方式。

    Java 程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。

  • 相关阅读:
    微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
    微信公众号支付开发当前URL未注册解决办法
    程序员头像
    jQuery简单实现iframe的高度根据页面内容自适应的方法(转)
    MySQL大表优化方案 Mysql的row_format(fixed与dynamic)
    PHP 测试杂项
    【转】MySQL的学习--触发器
    MYSQL PROCEDURE 测试用例
    CSS好看的按钮
    表格可在线编辑效果
  • 原文地址:https://www.cnblogs.com/iandf/p/14659794.html
Copyright © 2020-2023  润新知