天天看点

图说 Java:理解 Java 机制最受欢迎的 8 幅图

世间总是一图胜过千万言,下面的8幅图来自于 Program Creek 的 Java教程 ,目前这是该网站最受欢迎的文章.

希望本文能帮你回顾你已经知道的那些知识。如果图片讲解的不够清晰,你可能需要阅读详细的文章或者进行搜索。

1. 字符串的不可变性(String Immutability)

String s = "abcd";  
s = s.concat("ef");
           

下图显示了如下代码运行的过程: 

中文参考:Java String 详解 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

2. equals() 与 hashCode() 方法的关系

设计 HashCode(哈希编码,散列码) 是为了提高性能.  

equals()与hashCode()方法之间的关系可以概括为: 

2.1 如果两个对象相等(equal),那么必定拥有相同的哈希码(hash code) 

2.2 即使两个对象有相同的哈希值(hash code), 但他们不一定相等. 

中文参考:  HashMap的实现原理 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

3. Java 异常类层次结构

粉红色的是会被检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明. 

另一类异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理。 

而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。 

中文示例:  Exception 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

4. 集合类层次结构

注意Collections(工具类) 和 Collection(集合顶层接口) 的区别: 

中文参考:  Collections 

图说 Java:理解 Java 机制最受欢迎的 8 幅图
图说 Java:理解 Java 机制最受欢迎的 8 幅图

5. Java同步

Java同步(synchronization)机制可以用一座大楼来比喻: 

中文参考:  线程同步---synchronized 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

6.对象皆指针(Aliasing,别名)

别名是指多个引用指向同一个内存地址(对象实际地址,可以理解为这就是对象),甚至这些引用的类型完全不一样. 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

7. 堆(Heap)和栈(Stack)

下图显示了运行时内存中方法和对象所处的位置 

绝大多数情况下:对象(及其属性域)都保存在堆里面,而方法的参数,局部变量(引用,以及6种基本类型)保存在栈里面. 

当然,极特殊的情况下(极度优化[对象入栈],常量池[String],静态变量[方法区]等)也会打破这个潜规则。 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

8. JVM运行时数据区域划分

下图显示了JVM(Java虚拟机)运行时总体的数据区域划分 

图说 Java:理解 Java 机制最受欢迎的 8 幅图

翻译:http://blog.csdn.net/renfufei/article/details/13594715

原文:http://www.programcreek.com/2013/09/top-8-diagrams-for-understanding-java/

Related posts:

  1. Java hashCode() and equals() Contract for the contains(Object o) Method of Set
  2. Java equals() and hashCode() Contract
  3. How does Java handle aliasing?
  4. HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap

版权声明:本文为CSDN博主「weixin_34334744」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_34334744/article/details/92512040