Java基础
tiepiche
这个作者很懒,什么都没留下…
展开
-
第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 · 217 阅读 · 0 评论 -
第11条 谨慎地覆盖clone
是否要实现Cloneable所有实现了Cloneable接口的类都应该用一个公有方法覆盖clone,此公有方法首先调用super.clone,然后修正任何需要修正的域。如果你继承了一个实现Cloneable接口的类,那么你也必须实现一个行为良好的clone方法、这同样适用于所有直接或间接实现Cloneable的类。但是,实际上这是很难保证的,因此实际上对于clone方法的使用效果也很难保证。因...原创 2020-04-16 08:40:53 · 171 阅读 · 1 评论 -
Java受检异常和非受检异常
异常分类Java中所有异常都是java.lang.Throwable的子类,通常分为三类:Error: 表示不可处理的错误,通常是程序引起的不可恢复的错误,比如资源不足等。处理方式: 不处理。RuntimeException: 运行时异常,通常是通常分为两种: 受检异常(checked exception)和非受检异常(unchecked exception)。常见受检异常常见...原创 2020-04-14 09:40:50 · 2299 阅读 · 0 评论 -
编译时类型与运行时类型解析
1. 背景Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型,一种是编译时类型,另一种是运行时类型。2. 编译时类型编译时类型由声明该变量时使用的类型决定,比如下方代码块中的main函数类声明的person和male引用变量,其实他们的编译类型分别是Person和Male。编译时引用变量只能调用其编译时类型所具有的方法,因此person是只能调用printAge...原创 2020-04-04 16:18:41 · 2915 阅读 · 0 评论 -
可检查类型容器
Collections利用现有容器生成可检查容器checkedCollection、checkedList、checkedSet、checkedMap所谓可检查就是通过将原容器包装,在对传入的对象进行类型检查,第二参数就是传入参数必须要满足的数据类型,从而避免传入不符合类型的对象 // 传入任何Collection子类,返回一个检查Collection对象public static &...转载 2020-04-04 15:19:58 · 97 阅读 · 0 评论 -
BigDecimal解读
源码原创 2020-03-07 16:25:07 · 306 阅读 · 0 评论 -
BigInteger解读
源码原创 2020-03-06 00:16:32 · 235 阅读 · 0 评论 -
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 · 907 阅读 · 0 评论