自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 第46条 for-each循环优先于传统的for循环

迭代器循环的缺点如下面代码及输出结果所示,本来期望输出的是Face枚举值的笛卡尔积、36种结果,实际上输出只有6种结果。原因就是i和j本质上都是同一个引用对象,所以遍历过程中、两者是同时变化的。enum Face {ONE, TWO, THREE, FOUR, FIVE, SIX}Collection<Face> faces = Arrays.asList(Face.values...

2020-04-19 12:43:26 235

原创 第11条 谨慎地覆盖clone

是否要实现Cloneable所有实现了Cloneable接口的类都应该用一个公有方法覆盖clone,此公有方法首先调用super.clone,然后修正任何需要修正的域。如果你继承了一个实现Cloneable接口的类,那么你也必须实现一个行为良好的clone方法、这同样适用于所有直接或间接实现Cloneable的类。但是,实际上这是很难保证的,因此实际上对于clone方法的使用效果也很难保证。因...

2020-04-16 08:40:53 185 1

原创 Java受检异常和非受检异常

异常分类Java中所有异常都是java.lang.Throwable的子类,通常分为三类:Error: 表示不可处理的错误,通常是程序引起的不可恢复的错误,比如资源不足等。处理方式: 不处理。RuntimeException: 运行时异常,通常是通常分为两种: 受检异常(checked exception)和非受检异常(unchecked exception)。常见受检异常常见...

2020-04-14 09:40:50 2369

原创 编译时类型与运行时类型解析

1. 背景Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型,一种是编译时类型,另一种是运行时类型。2. 编译时类型编译时类型由声明该变量时使用的类型决定,比如下方代码块中的main函数类声明的person和male引用变量,其实他们的编译类型分别是Person和Male。编译时引用变量只能调用其编译时类型所具有的方法,因此person是只能调用printAge...

2020-04-04 16:18:41 2957

转载 可检查类型容器

Collections利用现有容器生成可检查容器checkedCollection、checkedList、checkedSet、checkedMap所谓可检查就是通过将原容器包装,在对传入的对象进行类型检查,第二参数就是传入参数必须要满足的数据类型,从而避免传入不符合类型的对象 // 传入任何Collection子类,返回一个检查Collection对象public static &...

2020-04-04 15:19:58 120

原创 BigDecimal解读

源码

2020-03-07 16:25:07 321

原创 BigInteger解读

源码

2020-03-06 00:16:32 258

转载 Java浮点数运算中有两个特殊的情况:NAN、INFINITY

java浮点数运算中有两个特殊的情况:NAN、INFINITY。1. INFINITY在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢?我们知道,在整型运算中,除数是不能为0的,否则直接运行异常。但是在浮点数运算中,引入了无限这个概念,我们来看一下Double和Float中的定义。Double:public static final double POSITIVE...

2020-03-04 11:07:37 930

原创 第9条 覆盖equals总要覆盖hashCode

equals与hashCode的关系hashCode的通用约定hashCode方法应该是什么样总结

2020-03-01 17:45:38 141

原创 第8条 覆盖equals时请遵守通用约定

1. 什么是equals方法equals是Object类中一个非final的方法,是设计成要被覆盖的。 public boolean equals(Object obj) { return (this == obj); }上述代码可以看出,Object的equals方法比较的是对象的内存地址,从这个角度来讲,类的每个对象本质上都是唯一的、因为每个对象的内存地址是不一...

2020-03-01 15:13:43 152

转载 如何删除GIT中的.DS_Store

.DS_Store 是什么使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_Store 文件。.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。相当于 Windows 下的 desktop.ini。删除 .D...

2020-02-24 11:10:22 292

原创 第3条 单例模式实现方案

阅读Effective Java第3条"用私有构造器或者枚举类型强化Singleton属性",进而拓展单例模式的实现方案,下文将逐个展开阐述。1. 单例模式的定义单例(Singleton)就是一个类必须保证有且仅有一个实例存在。比如,spring通过xml或@Component等注解配置的bean都是单例的2. 单例模式的好处1)只有一个对象,内存开支少、性能好2)避免对资源的多重占...

2020-02-23 15:19:43 248

原创 第2条 遇到多个构造器参数时要考虑用构建器

1. 构建器适合的使用场景当一个类成员变量很多,那么生成该类的对象就会需要传入很多参数,无论是通过构造函数生成还是静态工厂方法,这种场景就比较适合使用构建器--Builder模式。public class A { private int a; private int b; private int c; // 传统的构造函数 public A(int a){} ...

2020-02-19 09:49:59 151

原创 第7条 避免使用终结方法

1. 什么是终结方法JVM垃圾处理器在回收对象内存前需要做一些操作,以确保该对象正在处理的非Java资源被释放,如文件句柄、数据库连接等。为处理这样的状况,Java 提供了被称为收尾(finalization )的机制,通常就是给类定义finalize()方法,就是我们所说的终结方法。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行,因为垃圾回收该对象前会调用其...

2020-02-17 10:00:18 125

原创 第1条 考虑用静态工厂方法代替构造器

1. 什么是静态工厂方法对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造方法。但其实还有一种方法–类提供一个公有静态工厂方法(static factory method),它只是一个返回类的实例的静态方法。如下代码所示,是来自Boolean的静态工厂方法、将boolean基本类型值转换成一个Boolean对象引用:public static Boolean v...

2020-02-16 19:15:36 93

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除