File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -136,11 +136,23 @@ JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也
136136| 二进制位数 | 1 | 8 | 16 | 16 | 32 | 64 | 32 | 64 |
137137| 包装类 | Boolean | Byte | Character | Short | Integer | Long | Float | Double |
138138
139+ ## 为什么不能用浮点型表示金额?
140+
141+ 由于计算机中保存的小数其实是十进制的小数的近似值,并不是准确值,所以,千万不要在代码中使用浮点数来表示金额等重要的指标。
142+
143+ 建议使用BigDecimal或者Long来表示金额。
144+
139145## 什么是值传递和引用传递?
140146
141147- 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
142148- 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。所以对引用对象进行操作会同时改变原对象。
143149
150+ ## 了解Java的包装类型吗?为什么需要包装类?
151+
152+ Java 是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将 int 、double 等类型放进去的。因为集合的容器要求元素是 Object 类型。
153+
154+ 为了让基本类型也具有对象的特征,就出现了包装类型。相当于将基本类型包装起来,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
155+
144156## 自动装箱和拆箱
145157
146158Java中基础数据类型与它们对应的包装类见下表:
@@ -1026,6 +1038,12 @@ if (obj instanceof String) {
10261038}
10271039```
10281040
1041+ ## transient关键字的作用?
1042+
1043+ Java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。
1044+
1045+ 也就是说被transient修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。
1046+
10291047## 什么是反射?
10301048
10311049动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
@@ -1039,3 +1057,8 @@ if (obj instanceof String) {
103910573 . Web服务器中利用反射调用了Sevlet的` service ` 方法
104010584 . JDK动态代理底层依赖反射实现
10411059
1060+ ## 讲讲什么是泛型?
1061+
1062+ Java泛型是JDK 5中引⼊的⼀个新特性, 允许在定义类和接口的时候使⽤类型参数。声明的类型参数在使⽤时⽤具体的类型来替换。
1063+
1064+ 泛型最⼤的好处是可以提⾼代码的复⽤性。以List接口为例,我们可以将String、 Integer等类型放⼊List中, 如不⽤泛型, 存放String类型要写⼀个List接口, 存放Integer要写另外⼀个List接口, 泛型可以很好的解决这个问题。
Original file line number Diff line number Diff line change @@ -174,6 +174,12 @@ return h&(length-1); //第三步 取模运算
174174
175175在JDK1.8的实现中,优化了高位运算的算法,通过` hashCode() ` 的高16位异或低16位实现的:这么做可以在数组比较小的时候,也能保证考虑到高低位都参与到Hash的计算中,可以减少冲突,同时不会有太大的开销。
176176
177+ ## 为什么建议设置HashMap的容量?
178+
179+ HashMap有扩容机制,就是当达到扩容条件时会进行扩容。扩容条件就是当HashMap中的元素个数超过临界值时就会自动扩容(threshold = loadFactor * capacity)。
180+
181+ 如果我们没有设置初始容量大小,随着元素的不断增加,HashMap会发生多次扩容。而HashMap每次扩容都需要重建hash表,非常影响性能。所以建议开发者在创建HashMap的时候指定初始化容量。
182+
177183### 扩容过程?
178184
1791851.8扩容机制:当元素个数大于` threshold ` 时,会进行扩容,使用2倍容量的数组代替原有数组。采用尾插入的方式将原数组元素拷贝到新数组。1.8扩容之后链表元素相对位置没有变化,而1.7扩容之后链表元素会倒置。
You can’t perform that action at this time.
0 commit comments