java
java
coffeesunshine
这个作者很懒,什么都没留下…
展开
-
设计模式
创建型模式: 各种工厂模式Factory、Abstract Factory;单例模式Singleton;构建器模式Builder;原型模式ProtoType。 结构型模式: 类、对象继承、组合方式。包括桥接模式Bridge;适配器模式Adapter;装饰者模式Decorator;代理模式Proxy;组合模式Composite;外观模式Facade;享元模式Flyweight等。 行为型模式: 类或对象之间交互、职责划分等。策略模式Strategy;解释器模式Interpreter;命令模式Command;观原创 2021-02-04 16:27:29 · 67 阅读 · 0 评论 -
接口和抽象类区别
接口: 不能实例化。不能包含任何非常量成员。任何field都是隐含着public static final的。没有非静态方法实现。要么是抽象方法,要么是静态方法。 抽象类: 不能实例化。用abstract关键字修饰class。可以有一个或者多个抽象方法,可以没有抽象方法。 ...原创 2021-02-04 15:48:04 · 58 阅读 · 1 评论 -
HashTable、HashMap、TreeMap区别
HashTable、HashMap、TreeMap都实现了Map接口,是以键值对的形式存储和操作数据的容器类型。 HashTable: 是同步的,不支持null键和值,因为同步导致的性能开销,不推荐使用。扩展Dictionary类的。 HashMap: 与HashTable区别,在于HashMap不是同步的,支持null键和值等。使用较多。扩展了AbstractMap。在大部分放入、访问或者删除,而对顺序没有特别要求的场景是较好的选择。 1)重写了hashCode也需要重写equals。 2)equals相原创 2021-02-04 13:41:43 · 131 阅读 · 0 评论 -
ArrayList、Vector、LinkedList区别
ArrayList、Vector、LinkedList都是实现集合框架中的List的有序集合。 ArrayList: 动态数组实现,Vector在扩容时会提高1倍,而ArrayList则是增加50%。非线程安全。插入和删除速度较慢,但检索速度很快 Vector: 动态数组实现,其内部元素以数组形式顺序存储的。线程安全。 LinkedList: 双向链表实现,不需要像ArrayList、LinkedList那样调整容量。非线程安全。增加和删除元素的速度较快,但是检索速度较慢。 (单线程应尽量使用ArrayLi原创 2021-02-04 13:18:54 · 88 阅读 · 0 评论 -
int和Integer区别
1、int是Java的8个原始数据类型(Primitive Types,boolean、byte 、short、char、int、float、double、long)之一。 2、Integer是int对应的包装类。原创 2021-02-04 11:35:11 · 73 阅读 · 0 评论 -
代理模式、反射机制
Java反射机制,代理 1、反射机制:通过反射我们可以直接操作类或者对象,如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。 2、代理模式 1)静态代理:事先写好代理类,可以手工编写,也可以用工具生成。缺点是每个业务类都要对应一个代理类,非常不灵活。 2)动态代理:运行时自动生成代理对象。缺点是生成代理代理对象和调用代理方法都要额外花费时间。 比如用来包装RPC调用、面向切面的编程AOP。 JDK动态代理:基于Java反射机制实现,必须要实现接口的业务类才能用这原创 2021-02-04 10:51:37 · 128 阅读 · 0 评论 -
String、StringBuffer和StringBuilder区别
1、String 是典型的Immutable类,被声明成为final class,所有属性也都是fnal的。由于它的不可变性,像拼接、裁剪字符串等都会产生新的String对象。 场景: 在字符串内容不经常发生变化的业务场景优先使用String类。 2、StringBuffer 是为解决String拼接产生太多中间对象的问题。StringBufer本质是一个线程安全的可修改字符序列,它保证了线程安全,也带来了额外的性能开销。 场景: 在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在多线程环境下,建议原创 2021-02-04 10:26:09 · 87 阅读 · 0 评论 -
4种引用
区别与使用场景: 不同引用类型,主要是对象不同的可达性状态和对垃圾收集的影响 1、强引用 强引用是普通对象引用,只要还有强引用指向一个对象,垃圾收集器就不会碰这种对象。一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式地将相应引用赋值为null,就是可以被垃圾收集的了。 2、软引用 只有当JVM认为内存不足时,才会去试图回收软引用指向的对象。JVM会确保在抛出OutOfMemoryError之前,清理软引用指向的对象。 使用场景: 软引用通常用来实现内存敏感的缓存。如果还有空闲内存,就可原创 2021-02-04 10:03:33 · 119 阅读 · 0 评论 -
final、finally和finalize区别
1、final可以用来修饰类、方法、变量,分别有不同的意义,final修饰的class代表不可以继承扩展,final的变量是不可以修改的,而final的方法也是不可以重写的(override)。 2、finally则是Java保证重点代码一定要被执行的一种机制。我们可以使用try-finally或者try-catch-finally来进行类似关闭JDBC连接、保证unlock锁等动作。 1)不要在 finally 中使用 return 语句。 2)finally 总是执行,除非程序或者线程被中断。 3、fi原创 2021-02-04 09:50:07 · 73 阅读 · 0 评论 -
Exception和Error区别
1、Exception和Error都是继承了Throwable类 2、Exception又分为可检查(checked)异常和不检查(unchecked)异常,必须显式地进行捕获处理。类似 NullPointerException、ArrayIndexOutOfBoundsException之类。原创 2021-02-04 09:29:11 · 168 阅读 · 0 评论