码迷,mamicode.com
首页 > 编程语言 > 详细

javaSE一些实习问题

时间:2021-04-15 12:27:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:val   语言   javase   hashcode   程序   传递   其它   关联   重写   

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

javaSE一些实习问题

标签:val   语言   javase   hashcode   程序   传递   其它   关联   重写   

原文地址:https://www.cnblogs.com/iandf/p/14659794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!