Java基础

作者: AlberLiu | 来源:发表于2018-02-01 16:45 被阅读0次

    1.Java中Class.forName()和ClassLoader.loadClass()的区别

    Class.forName方法有要不要初始static变量的参数,而ClassLoader.loadClass()没有;

    2. HashMap和HashTable的区别

    (1).HashMap不是线程安全的,HashTable是线程安全的
    (2).HashMap执行效率比HashTable效率高
    (3).HashMap允许null key和null value,而HashTable不允许

    3. ConcurrentHashMap

    采用的是分段锁的机制,是线程安全的,效率比HashTable高。

    4.foreach和for

    foreach效率没有for的效率高。
    foreach不能修改数据

    5.volatile

    1:保证此变量对所有线程的可见性
    2:禁止指令重排序优化

    6.线程同步

    1.针对每个类,也有一个锁,所以synchronized static方法可以在类的范围内防止对static数据的并发访问。

    7.线程池

    FixedThreadPool
    创建固定数量线程的线程池
    CachedThreadPool
    创建一个可缓存的线程池,如果现有线程没有可用的,则创建一个新线程并添加到池中,终止并从缓存中移除那些已有60秒钟未被使用的线程。
    SingleThreadExecutor
    创建一个单线程化的Executor
    ScheduledThreadPool
    创建一个支持定时以及周期性的任务执行的线程池

    8.equels方法需要满足:

    自反性,对称性,传递性,一致性。

    9.动态代理

    (1)JDK动态代理

    编写接口类
    实现InvocationHandler接口的invoke方法,
    Moveable proxy=(Moveable)Proxy.newProxyInstance(
    m.getClass().getClassLoader(),
    m.getClass().getInterfaces(),
    handler);

    (2)cglib 动态代理

    编写父类
    实现MethodInterceptor接口的 intercept方法
    Enhancer enhancer=new Enhancer();
    enhancer.setSuperClass(clazz);
    enhancer.setCallback(this);
    enhancer.create(); 返回代理对象

    10.ArrayList的默认大小为10,扩容的大小为 (旧容量 * 3 / 2) + 1

    11.Java大数运算

    BigInteger 支持任意精度的整数
    BigDecimal 支持任意精度的定点数

    相关文章

      网友评论

        本文标题:Java基础

        本文链接:https://www.haomeiwen.com/subject/ayodzxtx.html