Java基础

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,636评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,602评论 18 399
  • J2SE基础 1. 九种基本数据类型的大小,以及他们的封装类 注:事实上应该是八种基本数据类型,String类并不...
    呵鲲阅读 3,345评论 0 0
  • 我以为,我是一个嗜酒如命的人,你错了,我是一只盛满灰尘的酒杯。我曾以为在世界上,总会有那么一次机会,让我怀揣着香醇...
    2lne阅读 1,814评论 0 1
  • 一个丧偶的男人,在丧礼上笑脸盈盈的招待来访的亲友,弄的亲友不知如何是好,很尴尬,想安慰他,他好像很乐的样子,不安慰...
    纯莹一一北原莹子阅读 1,499评论 0 1

友情链接更多精彩内容