package cn.itcast_07; /* * 面试题: * 1:final,finally和finalize的区别 * final:最终的意思,可以修饰类,成员变量,成员方法 * 修饰类,类不能被继承 * 修饰变量,变量是常量 * 修饰方法,方法不能被重写 * finally:是异常处理的一部分,用于释放资源. * 一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了 * finalize:是Object类的一个方法,用于垃圾回收 * * 2:如果catch里面有r…
package com.heima.test; public class Test1 {  /**  * * A:面试题1   * final,finally和finalize的区别   * final可以修饰类,不能被继承   * 修饰方法,不能被重写   * 修饰变量,只能赋值一次   *    * finally是try语句中的一个语句体,不能单独使用,用来释放资源   *    * finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法.  …
final: final是一个修饰符,可以修饰变量.方法和类,如果final修饰变量,意味着变量的值在初始化后不能被改变: 防止编译器把final域重排序到构造函数外:(面试的时候估计答出这个估计会加分哦!一般人都会答上面几个,哈哈~,大牛可以忽略) finalize: finalize方法是在对象被回收之前调用方法,可以给对象自己最后一个复活的机会: finally: finally与try和catch一起用于异常处理,finally块一定会被执行,无论在try块中是否发生异常:…
finally:finally是一个关键字,与try和catch一起用于异常的处理,finally块一定会执行,无论在try快中是否有发生异常. finalize:finalize方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用finalize没有保证. final是最重要的,以下重点介绍以下:1.可以修饰类,不可以被继承:2.可以修饰方法,不可以被重写:JVM会尝试将其内联,以提高运行效率3.可以修饰变量,不可以被改变.如果修饰引用,那么表示引用不可变,引用指向…
final 修饰符(关键字) 如果一个类被声明为final,意味着它不能再派生新的子类,不能作为父类被继承.因此一个类不能及被声明为abstract,又被声明为final的.将变量或方法声明为final,可以保证他们使用中不被改变.被声明为final的变量必须在声明时给定初值,而以后的引用中只能读取,不可修改,被声明为final的方法也同样只能使用,不能重载. finally: 在异常处理时提供finally块来执行清楚操作.如果抛出一个异常,那么相匹配的catch语句就会执行,然后控制就会进入…
Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作.java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. Collection是个Java.util下的接口,它是各种集合结构的父接口. Collections是个jav…
1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和null value,而hashtable不允许. 2   HashTable是线程安全的一个Collection. HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于H…
1. Vector & ArrayList  相同点: 1.ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2.底层都是数组实现的 3.初始默认长度都为10. 不同点:1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好. 2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容…
synchronized和lock的区别: 类别 synchronized lock 存在层次 java的关键字,在jvm层面上 是一个类 锁的释放 1.以获取锁的线程执行完同步代码,释放锁 2.线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁 锁的获取 假设A线程获得锁,B线程等待, 如果A线程阻塞,B线程会一直等待 分情况而定,lock有多个锁获取的方法,可以尝试获得锁, 线程可以不用功一直等待 锁状态 无法判断 可以判断 锁类型 可以重入,不可以中…
sleep方法: 属于Thread类中的方法:会导致程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持着,当指定时间到了之后,又会自动恢复运行状态:在调用sleep方法的过程中,线程不会释放对象锁.(只会让出CPU,不会导致锁行为的改变) wait方法: 属于Object类中的方法:在调用wait方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify方法后本线程才进入对象锁定池准备.获取对象锁进入运行状态.(不仅让出CPU,还释放已经占有的同…