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

  • 相关阅读:
    获取经纬度 CLLocation
    获取手机 IP
    UIBeaierPath 与 CAShapeLayer
    导航栏转场动画CATransition
    UITextField输入限制/小数/首位等
    程序进入后台继续执行
    发送短信
    网络AFNetworking 3.1
    UIBezierPath
    CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation
  • 原文地址:https://www.cnblogs.com/iandf/p/14659794.html
Copyright © 2011-2022 走看看