1 final、finally和finalize

  final 是一个关键字 ,final 修饰 对象不能被修改,final 修饰的方法不能被重写,final 修饰的 类 不能被继承。

  finally 是 异常处理的最后一步,finally 一定会被执行,一般用于资源释放。

      问题:

        1 如果 在 try 或者 catch 种有 return ,那么 finally  会执行吗?

          答:finally  一定会执行

        2 在什么时候执行?

          答:finally   会在return的 过程中执行,比return 语句执行晚

        3 finally 修改 返回值对象 的返回值有影响吗?

          答:finally 修改返回值变量 是可以修改的,但是finally 执行比 return 晚, 如果这个变量是引用类型, finally 的修改返回值变量影响返回值,如果是 值传递 的类型那么是复制 一份返回值,这时候不影响返回值

        4 finally  直接return 对返回值有影响吗?

          答:在finally   里面直接返回可以覆盖 前面 try 或者catch 的 返回值。

  finalize 是object 的一个方法和 垃圾回收有关,finalize()方法是在GC释放对象时被自动调用,常用于释放一些GC无法释放的资源

2 构造方法 和 代码块谁先执行

    

    public User(){
System.out.println( "User" );
} {
System.out.println( "{}" );
} {
System.out.println( "{}2 " );
} static {
System.out.println( "init" );
}

如果上图, 如果 new  一个 User  ,打印的结果是 init  {} {}2  User ,所以 动态代码块先执行。但是静态代码块比动态代码块更早执行。多个动态代码块按顺序执行。

3 wait 和 sleep 的区别

  1 wait 是 Object 的 普通方法,sleep 是Thread 类的 静态方法。

  2 调用 wait 需要先 synchronized(  这个对象 ),也就是当前线程需要获取到这个对象的 锁,才能调用,否者活抛出 非法异常。 sleep 可以直接调用。

  3 wait 以后,当前线程会 释放 这个 obj 对象 的锁。 如果是 sleep 的话不会释放锁。wait 以后需要 notify(随机唤醒一个等待 这个 obj 对象的 线程) 或者 notifyAll(唤醒所有需要 等待这个 obj 的线程,让他们抢锁 ) 来唤醒,sleep 指定了时间的,时间到了就会自己醒过来。因为 sleep  指定了时间,所以它才能 不释放锁。

4 HashMap HashTable  ConcurrentHashMap 的 区别和原理。

  小说说不通 HashMap  吧u支持并发。 HashTable ,都支持并发。但是 HashTable   支持并发的方式 方法全面加 synchronized 效率很低,ConcurrentHashMap  是 在代码区域加入 synchronized  效率比 HashTable  高。

  

  在说说存储原理。 他们的 存储结构都 用数组实现的。通过key 算出一个hash 值,然后 取这个 hash 值后面的数组  长度-1的二进制位个数 为。然后通过这个 值作为数组下标放到数组里面去。数组里面男的 value 是 一个 单链表的地址。如果两个 哈希值的 后面 几位完全 相同,就都放到这个数组的 同样位置,并且 放在链表的开头。查找的时候是怎么查找的呢?首先 通过hash值 算出 位置,然后如果数组的这个位置只有一个 链表元素就直接返回,如果有多个,那么久开始比较 hash 值。 另外说一句,这个单向链表里面放的不只是 value ,还有key 。

5 GC的 等级

    1 Minor GC  青年区满了,触发,清理青年区

    2 Full GC

      (1)调用System.gc时,系统建议执行Full GC,但是不必然执行
      (2)老年代空间不足
      (3)方法区空间不足
      (4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存
      (5)由Eden区、survivor space1(From Space)区向survivor space2(To Space)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小

    2 Major GC 是清理永久代 ,JVM 规范没有明确指出。

6 synchronized 修饰的  的 同一个类的2个方法方法可以同时执行吗?

   1 sync 修饰静态方法。 这时候锁的是 这个类。要拿到这类的锁才可以进入这个方法。所以这时候  同一个类的 两个 sync 修饰的静态方法不能同时执行。

  

   2 sync 修饰 普通方法。 这时候锁的对象是这个当前对象。 但是 如果是 wait 方式 等线程等待会释放锁,这时候另一个线程可以获取锁,所以可以竟然,如果是 sleep 方式的 线程等待 那么久不会。

   3 一个方法是 静态,一个是普通。锁的都不是一个对象。肯定不影响了。

Java 容易疑惑的一些杂记录的更多相关文章

  1. 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)

    前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...

  2. android(java) 开发过程中经验及总结记录

    android(java) 开发过程中经验及总结记录

  3. java中equse和==做比较记录(转)

    String使用的equals方法和==的区别 equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指 ...

  4. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  5. java Web应用配置log4j日志记录

    公司启动全国支票影像系统,有这样一个功能是和消息中间件打交道,需要记录每一个报文出错情况,因为方便后期开发人员的调试,我选用了log4j作为日志记录,好了废话不多说了! 第一步:首先建立一个WEB工程 ...

  6. java rest框架jersey数组单记录问题解决

    JAVA数据接口采用jersey技术,可以返回xml,json等格式,可以根据客户端请求accept,如:Application/json,Application/xml 来得到不同的接口数据,非常好 ...

  7. Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解

    我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...

  8. Linux中java项目环境部署,简单记录一下

    这里只是简单的记录一下linux环境下面如何快速的搭配好环境,使你的项目能在linux环境上面运行. 很多时候,我们都是用windows环境进行配置调试的,而真正很多服务器都是在linux服务器上面的 ...

  9. java开源项目之IQQ学习记录之项目环境搭建与启动

    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/18779727 作者:sushengmiyan 现在就码字说说今天晚上搞定的一个项目 ...

随机推荐

  1. jquery学习笔记(二):DOM元素操作

    内容来自[汇智网]jquery学习课程 2.1 元素属性操作 1.获取元素的属性 语法:attr(name) 参数name表示属性的名称 2.设置元素的属性 单个属性设置语法:attr(key,val ...

  2. Linux课程---12、linux中内存指令(top命令的作用是什么)

    Linux课程---12.linux中内存指令(top命令的作用是什么) 一.总结 一句话总结: top实时观察进程.内存和CPU情况 1.电脑出现反应慢情况,最先想到的是什么? 内存 2.linux ...

  3. Laravel5.4中自定义404等错误页面

    1.在resources/views/下简历文件夹error,在error文件中建立"404.blade.php文件". <!DOCTYPE html PUBLIC &quo ...

  4. Django的日常-模型层(1)

    目录 Django的日常-模型层(1) 模型层 django测试环境 ORM查询 Django的日常-模型层(1) 模型层 模型层其实就是我们应用名下的models.py文件,我们在里面写入想要创建的 ...

  5. Nginx 教程 2:性能

    为了获得更好的学习效果,我们建议你在本机安装 Nginx 并且尝试进行实践. tcp_nodelay, tcp_nopush 和 sendfile tcp_nodelay 在 TCP 发展早期,工程师 ...

  6. java_缓冲流(字符输出流)

    /** 字符缓冲流: * java.io.BufferedWriter extends writer * BufferedWriter:字符缓冲输出流: * * 构造方法: * BufferedWri ...

  7. Foundation框架系列-NSDictionary

    排序 对字典中的key按照字母升序排序 // NOTE: 排序,得出最终请求字串 NSArray* sortedKeyArray = [[tmpDict allKeys] sortedArrayUsi ...

  8. python中用json存储列表字典等文件操作

    JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load 由于需要在脚本重启后依旧能够记住之前所使用的列表内容, 故采用json存储列表文 ...

  9. 爆表!猜猜这个大会的IQ总值有多高?

    “人人可及的未来,同样存在于「日拱一卒」的琐碎生活当中,那也是技术对生活最为直观的改变和演进.” “以通神明之德,以类万物之情”,这句来自<易经>的话,放到现今也合宜. 人类掌控事物发展的 ...

  10. 「题解」:[BZOJ4558]方

    问题: 方 时间限制: 2 Sec  内存限制: 256 MB 题面 题目描述 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一 ...