auto commit
This commit is contained in:
parent
9439942f26
commit
48e52d251b
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user