Java相关

Java基础

2018-02-01  本文已影响0人  AlberLiu

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 支持任意精度的定点数

上一篇下一篇

猜你喜欢

热点阅读