javaSE一些实习问题

2021/4/14 22:29:18

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



这篇关于javaSE一些实习问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程