diff --git a/notes/Java 基础.md b/notes/Java 基础.md index a9d3093d..842ebd84 100644 --- a/notes/Java 基础.md +++ b/notes/Java 基础.md @@ -1,5 +1,5 @@ -* [一、基本类型](#一基本类型) +* [一、数据类型](#一数据类型) * [包装类型](#包装类型) * [缓存池](#缓存池) * [二、String](#二string) @@ -38,7 +38,7 @@ -# 一、基本类型 +# 一、数据类型 ## 包装类型 @@ -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 diff --git a/notes/Leetcode-Database 题解.md b/notes/Leetcode-Database 题解.md index d47a54c9..5ab726c5 100644 --- a/notes/Leetcode-Database 题解.md +++ b/notes/Leetcode-Database 题解.md @@ -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