auto commit

This commit is contained in:
CyC2018 2018-07-09 23:40:46 +08:00
parent 9439942f26
commit 48e52d251b
2 changed files with 31 additions and 26 deletions

View File

@ -1,5 +1,5 @@
<!-- GFM-TOC -->
* [一、基本类型](#一基本类型)
* [一、数据类型](#一数据类型)
* [包装类型](#包装类型)
* [缓存池](#缓存池)
* [二、String](#二string)
@ -38,7 +38,7 @@
<!-- GFM-TOC -->
# 一、基本类型
# 一、数据类型
## 包装类型
@ -81,7 +81,7 @@ Integer n = 123;
System.out.println(m == n); // true
```
valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接使用缓存池的内容。
valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。
```java
public static Integer valueOf(int i) {
@ -194,7 +194,7 @@ String 不可变性天生具备线程安全,可以在多个线程中安全地
使用 String.intern() 可以保证相同内容的字符串变量引用相同的内存对象。
下面示例中s1 和 s2 采用 new String() 的方式新建了两个不同对象,而 s3 是通过 s1.intern() 方法取得一个对象引用,这个方法首先把 s1 引用的对象放到 String Poll字符串常量池然后返回这个对象引用。因此 s3 和 s1 引用的是同一个字符串常量池的对象。
下面示例中s1 和 s2 采用 new String() 的方式新建了两个不同对象,而 s3 是通过 s1.intern() 方法取得一个对象引用,这个方法首先把 s1 引用的对象放到 String Pool字符串常量池然后返回这个对象引用。因此 s3 和 s1 引用的是同一个字符串常量池的对象。
```java
String s1 = new String("aaa");
@ -204,7 +204,7 @@ String s3 = s1.intern();
System.out.println(s1.intern() == s3); // true
```
如果是采用 "bbb" 这种使用双引号的形式创建字符串实例,会自动地将新建的对象放入 String Poll 中。
如果是采用 "bbb" 这种使用双引号的形式创建字符串实例,会自动地将新建的对象放入 String Pool 中。
```java
String s4 = "bbb";
@ -266,7 +266,7 @@ public class PassByValueExample {
## float 与 double
1.1 字面量属于 double 类型,不能直接将 1.1 直接赋值给 float 变量,因为这是下转型,会使得精度下降,因此 Java 不能隐式执行下转型
1.1 字面量属于 double 类型,不能直接将 1.1 直接赋值给 float 变量,因为这是向下转型。Java 不能隐式执行向下转型,因为这会使得精度降低
```java
// float f = 1.1;
@ -341,8 +341,8 @@ Java 中有三个访问权限修饰符private、protected 以及 public
可以对类或类中的成员(字段以及方法)加上访问修饰符。
- 成员可见表示其它类可以用这个类的实例访问到该成员;
- 类可见表示其它类可以用这个类创建对象。
- 成员可见表示其它类可以用这个类的实例对象访问到该成员;
- 类可见表示其它类可以用这个类创建实例对象。
protected 用于修饰成员,表示在继承体系中成员对于子类可见,但是这个访问修饰符对于类没有意义。
@ -629,7 +629,7 @@ x.equals(y) == x.equals(y); // true
对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
```java
x.euqals(null); // false;
x.equals(null); // false;
```
**3. 实现**
@ -685,7 +685,7 @@ System.out.println(set.size()); // 2
理想的散列函数应当具有均匀性,即不相等的实例应当均匀分布到所有可能的散列值上。这就要求了散列函数要把所有域的值都考虑进来,可以将每个域都当成 R 进制的某一位,然后组成一个 R 进制的整数。R 一般取 31因为它是一个奇素数如果是偶数的话当出现乘法溢出信息就会丢失因为与 2 相乘相当于向左移一位。
一个数与 31 相乘可以转换成移位和减法:`31\*x == (x<<5)-x`编译器会自动进行这个优化
一个数与 31 相乘可以转换成移位和减法:`31*x == (x<<5)-x`编译器会自动进行这个优化
```java
@Override
@ -937,9 +937,7 @@ private 方法隐式地被指定为 final如果在子类中定义的方法和
**1. 静态变量**
静态变量在内存中只存在一份,只在类初始化时赋值一次。
- 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它;
- 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。
- 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。
```java

View File

@ -209,9 +209,9 @@ https://leetcode.com/problems/classes-more-than-5-students/description/
```html
+---------+
| Email |
| class |
+---------+
| a@b.com |
| Math |
+---------+
```
@ -305,6 +305,8 @@ HAVING
# 196. Delete Duplicate Emails
https://leetcode.com/problems/delete-duplicate-emails/description/
## Description
邮件地址表:
@ -319,14 +321,15 @@ HAVING
+----+---------+
```
查找重复的邮件地址:
删除重复的邮件地址:
```html
+---------+
| Email |
+---------+
| a@b.com |
+---------+
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
```
## SQL Schema
@ -435,7 +438,8 @@ SELECT
State
FROM
Person P
LEFT JOIN Address AS A ON P.PersonId = A.PersonId;
LEFT JOIN Address A
ON P.PersonId = A.PersonId;
```
# 181. Employees Earning More Than Their Managers
@ -481,7 +485,8 @@ SELECT
E1.NAME AS Employee
FROM
Employee E1
INNER JOIN Employee E2 ON E1.ManagerId = E2.Id
INNER JOIN Employee E2
ON E1.ManagerId = E2.Id
AND E1.Salary > E2.Salary;
```
@ -558,7 +563,8 @@ SELECT
C.Name AS Customers
FROM
Customers C
LEFT JOIN Orders O ON C.Id = O.CustomerId
LEFT JOIN Orders O
ON C.Id = O.CustomerId
WHERE
O.CustomerId IS NULL;
```
@ -681,7 +687,7 @@ https://leetcode.com/problems/second-highest-salary/description/
+---------------------+
```
如果没有找到,那么就返回 null 而不是不返回数据。
没有找到返回 null 而不是不返回数据。
## SQL Schema
@ -788,7 +794,8 @@ SELECT
COUNT( DISTINCT S2.score ) Rank
FROM
Scores S1
INNER JOIN Scores S2 ON S1.score <= S2.score
INNER JOIN Scores S2
ON S1.score <= S2.score
GROUP BY
S1.id
ORDER BY