提交 b397f38a 编写于 作者: Y yazhouasu

Merge branch 'JavaGuide-fs' of https://github.com/yazhouasu/JavaGuide into JavaGuide-fs

......@@ -288,8 +288,10 @@ new 运算符,new 创建对象实例(对象实例在堆内存中),对象
对象的相等,比的是内存中存放的内容是否相等。而引用相等,比较的是他们指向的内存地址是否相等。
### 2.2 面向对象三大特征
#### 2.2.1 封装
封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。就好像我们看不到挂在墙上的空调的内部的零件信息(也就是属性),但是可以通过遥控器(方法)来控制空调。如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。就好像如果没有空调遥控器,那么我们就无法操控空凋制冷,空调本身就没有意义了(当然现在还有很多其他方法 ,这里只是为了举例子)。
```java
public class Student {
private int id;//id属性私有化
......@@ -363,6 +365,7 @@ final 关键字主要用在三个地方:变量、方法、类。
3. 使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的 Java 实现版本中,会将 final 方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的 Java 版本已经不需要使用 final 方法进行这些优化了)。类中所有的 private 方法都隐式地指定为 final。
### 2.4 接口
#### 2.4.1 接口和抽象类的区别是什么?
1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
......@@ -385,8 +388,6 @@ final 关键字主要用在三个地方:变量、方法、类。
### 2.5 类的扩展
#### 2.5.1 String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
**可变性**
简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,`private final char value[]`,所以 String 对象是不可变的。
> 补充(来自[issue 675](https://github.com/Snailclimb/JavaGuide/issues/675)):在 Java 9 之后,String 类的实现改用 byte 数组存储字符串 `private final byte[] value`;
......
......@@ -73,7 +73,7 @@ public class Singleton {
private Singleton() {
}
public static Singleton getUniqueInstance() {
public synchronized static Singleton getUniqueInstance() {
//先判断对象是否已经实例过,没有实例化过才进入加锁代码
if (uniqueInstance == null) {
//类对象加锁
......
......@@ -384,10 +384,11 @@ public class Person implements Comparable<Person> {
// TODO Auto-generated method stub
if (this.age > o.getAge()) {
return 1;
} else if (this.age < o.getAge()) {
}
if (this.age < o.getAge()) {
return -1;
}
return age;
return 0;
}
}
......
......@@ -2,7 +2,7 @@
**下面的学习路线以及方法是笔主根据个人学习经历总结改进后得出,我相信照着这条学习路线来你的学习效率会非常高。**
学习某个知识点的过程中如果不知道看什么书的话,可以查看这篇文章 :[Java 学习必备书籍推荐终极版!](https://github.com/Snailclimb/JavaGuide/blob/master/docs/data/java-recommended-books.md)
学习某个知识点的过程中如果不知道看什么书的话,可以查看这篇文章 :[Java 学习必备书籍推荐终极版!](https://github.com/Snailclimb/JavaGuide/blob/master/docs/books/java.md)
另外,很重要的一点:**建议使用 Intellij IDEA 进行编码,可以单独抽点时间学习 Intellij IDEA 的使用。**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册