50
50
- [ 33 Java序列化中如果有些字段不想进行序列化 怎么办] ( #33-java序列化中如果有些字段不想进行序列化-怎么办 )
51
51
- [ 34 获取用键盘输入常用的的两种方法] ( #34-获取用键盘输入常用的的两种方法 )
52
52
- [ 参考] ( #参考 )
53
-
53
+ - [ 公众号 ] ( #公众号 )
54
54
<!-- /MarkdownTOC -->
55
55
56
56
@@ -233,7 +233,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
233
233
由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。
234
234
235
235
## 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用
236
- Java 程序在执行子类的构造方法之前,如果没有用 super () 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super () 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
236
+ Java 程序在执行子类的构造方法之前,如果没有用 super () 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super () 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
237
237
238
238
## 16. import java和javax有什么区别?
239
239
@@ -338,12 +338,9 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
338
338
339
339
### 为什么要有 hashCode
340
340
341
+ **我们先以“HashSet 如何检查重复”为例子来说明为什么要有 hashCode:** 当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 `equals()`方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。如果不同的话,就会重新散列到其他位置。(摘自我的Java启蒙书《Head first java》第二版)。这样我们就大大减少了 equals 的次数,相应就大大提高了执行速度。
341
342
342
- **我们以“HashSet 如何检查重复”为例子来说明为什么要有 hashCode:**
343
-
344
- 当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 equals()方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。如果不同的话,就会重新散列到其他位置。(摘自我的Java启蒙书《Head first java》第二版)。这样我们就大大减少了 equals 的次数,相应就大大提高了执行速度。
345
-
346
-
343
+ 通过我们可以看出:`hashCode ()` 的作用就是**获取哈希码**,也称为散列码;它实际上是返回一个int整数。这个**哈希码的作用**是确定该对象在哈希表中的索引位置。**`hashCode () `在散列表中才有用,在其它情况下没用。**在散列表中hashCode () 的作用是获取对象的散列码,进而确定该对象在散列表中的位置。
347
344
348
345
### hashCode()与equals()的相关规定
349
346
@@ -353,6 +350,8 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
353
350
4. **因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖**
354
351
5. hashCode () 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode (),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
355
352
353
+ 推荐阅读:[Java hashCode () 和 equals ()的若干问题解答](https:// www.cnblogs.com/skywang12345/p/3324958.html)
354
+
356
355
357
356
## 28. 为什么Java中只有值传递?
358
357
@@ -473,3 +472,13 @@ String s = input.readLine();
473
472
- https: // stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre
474
473
- https: // www.educba.com/oracle-vs-openjdk/
475
474
- https: // stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk?answertab=active#tab-top
475
+
476
+ ## 公众号
477
+
478
+ 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
479
+
480
+ ** 《Java面试突击》:** 由本文档衍生的专为面试而生的《Java面试突击》V2.0 PDF 版本[公众号](#公众号)后台回复 **"Java面试突击"** 即可免费领取!
481
+
482
+ **Java工程师必备学习资源:** 一些Java工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。
483
+
484
+ 
0 commit comments