zoukankan      html  css  js  c++  java
  • 理解java的八个图表

    1、字符串的不可变性

    String s="abcd";

    s=s.concat("ef");

    2、e'quals()和hashcode() contract

    hashcode()旨在提高性能;

    equals()和hasCode()之间的契约是:

    1. 如果两个对象相等,则它们必须具有相同的散列码。
    2. 如果两个对象具有相同的哈希码,则它们可能相等,也可能不相等。

    散列的价值在于速度。

    假如键没有按照一定的顺序进行保存,那么查询的时候就只能按照顺序进行线性查询,然而,线性查询是最慢的查询方式。所以,将键值按照一定的顺序排序,并且使用二分查找能购有效的提升速度。散列在此之上,更近一步,他将键保存在数组中(数组的查询速度最快),用数组来表示键的信息,但是由于Map的容量是可变的,而数组的容量是不变的。要解决这个问题,数组中存的并不是键本身,而是键对象生成的一个数字,将其作为数组的下标,这个数字就是散列码。

    3、java异常类层次结构

    红色被检查的异常必须在方法的子句中被捕获或者生命

    4、集合框架类

     

    5、java同步

    同步的意思可以用一个建筑的类来说明

     

    Java编程语言中提供了两种基本的同步用语:同步方法和同步语句。同步语句相对而言更为复杂一些,我们将在下一小节中进行描述。本节重点讨论同步方法。

    我们只需要在声明方法的时候增加关键字synchronized即可:

    [java] view plain copy
     
    1. public class SynchronizedCounter {  
    2.     private int c = 0;  
    3.     public synchronized void increment() {  
    4.         c++;  
    5.     }  
    6.     public synchronized void decrement() {  
    7.         c--;  
    8.     }  
    9.     public synchronized int value() {  
    10.         return c;  
    11.     }  
    12. }  

    c1和c2,这两个变量绝不会一起使用。所有对这两个变量的更新都需要进行同步。但是没有理由阻止对c1的更新和对c2的更新出现交错——这样做会创建不必要的阻塞,进而降低并发性。此时,我们没有使用同步方法或者使用和this相关的锁,而是创建了两个单独的对象来提供锁。

    [java] view plain copy
     
    1. public class MsLunch {  
    2.     private long c1 = 0;  
    3.     private long c2 = 0;  
    4.     private Object lock1 = new Object();  
    5.     private Object lock2 = new Object();  
    6.     public void inc1() {  
    7.         synchronized(lock1) {  
    8.             c1++;  
    9.         }  
    10.     }  
    11.     public void inc2() {  
    12.         synchronized(lock2) {  
    13.             c2++;  
    14.         }  
    15.     }  
    16. }  

     6、别名

    别名意味着可以更新的位置有多个别名,并且这些别名具有不同的类型。 
    这里写图片描述

    别名现象:是java操作对象的一种基本方式,当对引用型变量进行赋值操作时,可能出现别名现象,两个引用变量共同指向同一个对象,当一个引用对对象进行改变时,另一个引用变量的对象值也跟着改变

    7、对战和堆

    此图显示了方法和对象在运行时内存中的位置。 
    这里写图片描述

    8、java jvm在运行时的数据区

    此图显示了整个JVM运行时数据区域。

    这里写图片描述

  • 相关阅读:
    去除UINavigationBar的下边框
    struts2配置log
    GET和POST方式的乱码问题
    Eclipse中导入MyEclipse生成的war包
    TOMCAT管理页面部署WAR包 大小超出上限
    Java死锁 Thread Dump分析
    自定义标签之IterationTag
    Chart.js学习
    计数排序
    练手系列之旋转字符串
  • 原文地址:https://www.cnblogs.com/yr0215/p/8024824.html
Copyright © 2011-2022 走看看