![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 86
Brain_L
这个作者很懒,什么都没留下…
展开
-
动态代理
动态是相对于静态而言,何为静态,即编码时手动编写代理类、委托类。而动态呢,是不编写具体实现类,等到使用时,动态创建一个来实现代理的目的。为什么有了静态代理还需要动态代理呢?静态代理毕竟是你手动编码的,如果需要对很多个方法进行一些公共处理(比如耗时,日志等),你需要在每个方法处修改代码,而且逻辑上都是相通的。如果使用动态代理的话,你只需要指定规则,那么动态代理就可以根据你指定的规则进行处理。...原创 2020-02-11 23:39:51 · 160 阅读 · 0 评论 -
记PowerMockito whenNew的一个坑
被测试类:class A { public void handle() { B b = new B(); }}测试handle方法,而我不想真正去执行new B()操作,那么可以使用PowerMockito.whenNew:@RunWith(PowerMockRunner.class)@PrepareForTest({A.class})//此处写...原创 2019-12-20 11:15:24 · 12899 阅读 · 10 评论 -
【Java基础】Lambda表达式
看到一篇Lambda表达式的文章,自己写应该没这个写的好,特转载记录。转载 2019-11-01 17:09:56 · 87 阅读 · 0 评论 -
【Java基础】EnumSet
当需要使用位运算时,可能你会如此定义private final static int FIRST = 1;private final static int SECOND = 1 << 1;private final static int THIRD = 1 << 2;使用时进行与或运算。但是定义多了之后,会很乱、臃肿,编写容易出错。EnumSet可以实现类似的...原创 2019-10-31 14:19:56 · 205 阅读 · 1 评论 -
【Java基础】枚举
Java的枚举和C/C++中的枚举作用上类似,实现上不一样。本文主要探讨下Java中枚举的实现与应用。如果要定义常量,可能会这样定义:private static final int SUCCESS = 0;一旦这样的定义多了之后,就很难管理,容易出错,甚至重复定义。用枚举的话就很简洁清晰。枚举原理分析public enum EnumTest { SUCCESS, ...原创 2019-10-30 23:33:21 · 246 阅读 · 0 评论 -
几种单例模式的对比
单例模式有好几种实现方式:饿汉式、懒汉式、DCL、静态内部类、枚举等。本文主要探讨几种实现方式是否实现了真正意义上的单例——只创建一个对象。创建对象有这么几种方式:new、克隆、序列化、反射。几种单例模式实现时都会将构造函数声明为private,所以new这种方式此时认为不可用,那么着重看其他几种是否能保证真正的单例。序列化@Slf4jpublic class Sing...原创 2019-10-25 17:27:52 · 186 阅读 · 0 评论 -
【Java基础】LinkedHashMap
HashMap是根据key的hash值进行散列存储的,每个节点间是无序的。而LinkedHashMap可以实现有序的存储键值对。LinkedHashMap是继承于HashMap的,所以它的很多属性和方法都是HashMap中的,那么它是怎么实现有序存储的呢?1、属性/** * The head (eldest) of the doubly linked list. */tra...原创 2019-10-13 13:38:01 · 153 阅读 · 0 评论 -
【Java基础】四种引用(强引用、软引用、弱引用、虚引用)
java中的引用类似C/C++中的指针,都是指向内存中的某个对象,通过该引用可以直接操作对应的对象。引用和GC有着直接关系,根据可达性分析算法(从一个被称为 GC Roots 的对象开始向下搜索,如果一个对象到GC Roots没有任何引用链相连时,则说明此对象不可用),一个对象没有引用关联,则GC可以将其回收。1、强引用引用的默认方式,即是强引用,创建一个对象并把这个对象赋给一个引用变...原创 2019-08-04 09:14:25 · 272 阅读 · 0 评论 -
【Java基础】初始化时代码块执行顺序
本文讲下类在初始化加载时,静态代码块、构造代码块、构造函数以及有父类时的执行顺序。1、无父类时看个例子就一目了然了。public class TempTest { private static final Logger LOGGER = LoggerFactory.getLogger(TempTest.class); static { LOGGE...原创 2019-07-12 11:12:24 · 361 阅读 · 0 评论 -
【Java基础】HashMap
本文jdk版本为1.8。基本属性/** * The default initial capacity - MUST be a power of two. */ //默认初始化容量16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16/** * The maximum capacity, ...原创 2018-11-09 13:51:18 · 131 阅读 · 0 评论 -
【Java基础】ArrayList和LinkedList
一、ArrayList从名字上来看就是以数组为基础的List。来看源码:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{/** * De...原创 2018-11-07 14:36:23 · 130 阅读 · 0 评论 -
【Java基础】String、StringBuilder、StringBuffer
String、StringBuilder、StringBuffer是经常会被拿来比较的三个类,本文主要研究三者之间的区别。本文所用jdk为jdk1.8.0_151。一、String源码String的源码和注释已经列举了很多用法及原因,所以开头先贴出部分源码及注释,一些常用方法如charAt等本文暂不讨论。/** * The {@code String} class repres...原创 2018-10-30 11:09:04 · 119 阅读 · 0 评论 -
【Java基础】try、catch、finally
本文通过几个示例来研究try、catch、finally和return结合起来的各种情况。示例1: public String finallyTest() { String s = null; try { System.out.println("Enter try block"); s = "try block"; //String .valueOf(nu...原创 2018-10-22 16:19:12 · 158 阅读 · 0 评论 -
【Java基础】equals和hashcode
一、equalsequals是Object类的其中一个方法,默认的实现方法为 public boolean equals(Object obj) { return (this == obj); }可以看到,默认方法仅仅是判断是否为同一对象。因为各个类都是继承自Object类,所以各个类可以根据需要自己重写equals方法,如String类等。String...原创 2018-10-12 14:50:52 · 103 阅读 · 0 评论 -
【Java基础】a+=1与a=a+1
偶然在某个地方看到这个问题,第一反应是两者是有区别的,但是要说的很详细,一时又想不起来。所以在此记录下来。首先,java中整数的默认类型是int型,浮点数的默认类型是double型。数值的转换分为隐式转换和显式转换,隐式转换即jvm帮你去做转换,显式即你自己需要进行强制类型转换。什么时候进行隐式转换呢,存储范围小的向大的转换,如int向long转换(long a = 10;),进行算术...原创 2018-10-09 21:48:28 · 6700 阅读 · 1 评论 -
【Java基础】int和Integer
Java中存在8种基本数据类型:byte(8位)、short(16位)、int(32位)、long(64位)、float(32位)、double(64位)、char(16位,0x0000~0xffff)、boolean(true/false)java中不存在无符号数字类型,即C中的unsigned int等数据类型均有其对应的包装类,数字类型的包装类均继承自Numbers。int对应的包装类为...原创 2018-10-08 17:19:38 · 150 阅读 · 0 评论