[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/backdiy/JavaGuide/main/docs/java/basis/java-basic-questions-01.md [Back]  [Original]

---
title: Java&()
category: Java
tag:
  - Java
---

## 

### Java ?

1. 
2. 
3.  Java 
4.  C++  Java 
5. 
6. 
7.  Java  Java 
8. 

> **  [issue#544](https://github.com/Snailclimb/JavaGuide/issues/544)** C++11 2011 ,C++ windowslinuxmacos `std::thread``std::async`http://www.cplusplus.com/reference/thread/thread/?kw=thread

 

Write Once, Run Anywhere Java  Java  JDK  Docker Java 

### JVM vs JDK vs JRE

#### JVM

Java JVM Java JVM WindowsLinuxmacOS JVM  Java 

**JVM  JVM  JVM**  HotSpot VM  JVM 

 HotSpot VM  J9 VMZing VMJRockit VM  JVM  JVM [Comparison of Java virtual machines](https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines)  [Java SE Specifications](https://docs.oracle.com/javase/specs/index.html)  JDK  JVM 

![Java SE Specifications](./images/java-se-specifications.png)

#### JDK  JRE

JDK  Java Development Kit  Java SDK JRE javac javadoc  jdb

JRE  Java  Java  Java JVMJava java 

 Java  JRE  Java  JDK  Java  JDK JSP  Web  Java  JDK  JSP  Java servlet JDK  servlet

### ??

 Java JVM  `.class` Java  Java  C++RustGo Java 

**Java **

![Java](./images/java.png)

 `.class->`  JVM () JITjust-in-time compilation  JIT  JIT  Java  **Java ** 

> HotSpot (Lazy Evaluation) JIT JVM JDK 9  AOT(Ahead of Time Compilation) JIT JDK  AOT  AOT  JIT 

###  Java 





- **** [](https://zh.wikipedia.org/wiki/%E7%B7%A8%E8%AD%AF%E8%AA%9E%E8%A8%80) [](https://zh.wikipedia.org/wiki/%E7%B7%A8%E8%AD%AF%E5%99%A8) CC++GoRust 
- **** [](https://zh.wikipedia.org/wiki/%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80)[](https://zh.wikipedia.org/wiki/)interpret PythonJavaScriptPHP 

![](./images/.png)



> [](https://zh.wikipedia.org/wiki/)[](https://zh.wikipedia.org/wiki/)[Java](https://zh.wikipedia.org/wiki/Java)[LLVM](https://zh.wikipedia.org/wiki/LLVM)
>
> [ | Java ](https://tech.meituan.com/2020/10/22/java-jit-practice-in-meituan.html)

** Java **

 Java  Java  Java `.class`  Java 

### Oracle JDK vs OpenJDK

 OpenJDK  Oracle JDK  OpenJDK 

 Java 7OpenJDK  Sun  HotSpot OpenJDK  Java 7  Oracle  JVMJDKJRE  OpenJDK Oracle  2012 

> OpenJDK  Oracle JDK 
>
>  -  Oracle JDK  OpenJDK 7  Oracle  Java  Java WebStart  Rhino Oracle JDK 

****

1. Oracle JDK  6  OpenJDK [https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence](https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence) 
2. OpenJDK  Oracle JDK  OpenJDK 
3. Oracle JDK  OpenJDK OpenJDK  Oracle JDK  Oracle JDK / Oracle JDK OpenJDK  Oracle JDK 
4.  JVM Oracle JDK  OpenJDK 
5. Oracle JDK 
6. Oracle JDK  BCL/OTN  OpenJDK  GPL v2 

 

- BCL Oracle Binary Code License Agreement  JDK
- OTN Oracle Technology Network License Agreement 11  JDK 

![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/20210425151835918.png)

 [Differences Between Oracle JDK and OpenJDK](https://www.baeldung.com/oracle-jdk-vs-openjdk)

### Java  C++ ?

 C++ Java  C++  C++

Java  C++ 

- Java 
- Java C++  Java 
- Java (GC)
- C ++ Java  Java 
- ......

## 

### ?

1. **** :  0 
2. **** : ( ASCII ),; ()
3. ****   2 ; 

 (** `char`  Java **)

### 

Java 

1. 

2. 

3. 

(,)

Clean Code

> ****
>
> ****
>
> 
>
> 
>
> ```java
> // check to see if the employee is eligible for full benefits
> if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
> ```
>
> 
>
> ```java
> if (employee.isEligibleForFullBenefits())
> ```

### 

 ****  **** 

Java  **** **** 

### Java 

|                  |    |            |          |              |            |           |        |
| :------------------- | -------- |-------- | -------- | -------- | --------| --------| -------- |
|      | private  | protected  | public   |              |            |           |        |
|  | abstract | class      | extends  | final        | implements | interface | native |
|                      | new      | static     | strictfp | synchronized | transient  | volatile  | enum   |
|      | break    | continue   | return   | do           | while      | if        | else   |
|                      | for      | instanceof | switch   | case         | default    | assert    |        |
|      | try      | catch      | throw    | throws       | finally    |           |        |
|          | import   | package    |          |              |            |           |        |
|      | boolean  | byte       | char     | double       | float      | int       | long   |
|                      | short    |            |          |              |            |           |        |
|      | super    | this       | void     |              |            |           |        |
|          | goto     | const      |          |              |            |           |        |

> Tips IDE 
>
> `default` 
>
> -  `switch`  `default` 
> -  JDK8  `default` 
> -  `default`

  `true`, `false`,  `null` 

[https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html)

### 

 1  1Java ++)--

++  -- ()/()/ `b = ++a`  1 b `b = a++` ( b) 1++a  a+1 a++ a //

### continuebreak  return 

 

1. `continue` 
2. `break` 

`return` return 

1. `return;`  return 
2. `return value;` return 



```java
    public static void main(String[] args) {
        boolean flag = false;
        for (int i = 0; i  
>
> 

****



Java 

> ( `StringBuilder` ) 
>
> ```java
> StringBuilder sb = new StringBuilder();
> StringBuilder sb2 = new StringBuilder("HelloWorld");
> ```
>
>     ((overloading resolution))
>
> Java  



****



1. 
2.  `private/final/static`  `static` 
3. 

****

|      |  |                                                          |
| :--------- | :------- | :--------------------------------------------------------------- |
|    |  |                                                              |
|    |  |                                                      |
|    |    |                |
|        |    |  |
|  |    |                            |
|    |    |                                                            |

**** Java [issue#892](https://github.com/Snailclimb/JavaGuide/issues/892) 

- 
- 
- 

  ****  void 

```java
public class Hero {
    public String name() {
        return "";
    }
}
public class SuperMan extends Hero{
    @Override
    public String name() {
        return "";
    }
    public Hero hero() {
        return new Hero();
    }
}

public class SuperSuperMan extends SuperMan {
    public String name() {
        return "";
    }

    @Override
    public SuperMan hero() {
        return new SuperMan();
    }
}
```

### ==  equals() 

**`==`** 

- `==` 
- `==` 

>  Java  == 

**`equals()`** `equals()``Object``Object``equals()`

`Object`  `equals()` 

```java
public boolean equals(Object obj) {
     return (this == obj);
}
```

`equals()` 

- ** `equals()`** `equals()`== `Object``equals()`
- ** `equals()`**  `equals()` true()

 IDEA  IDE  `==`  `equals()` 

```java
String a = new String("ab"); // a 
String b = new String("ab"); // b,
String aa = "ab"; // 
String bb = "ab"; // 
System.out.println(aa == bb);// true
System.out.println(a == b);// false
System.out.println(a.equals(b));// true
System.out.println(42 == 42.0);// true
```

`String`  `equals`  `Object`  `equals`  `String`  `equals` 

 `String`  `String` 

`String``equals()`

```java
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
```

### hashCode()  equals()

 `hashCode()`  `equals()`? `equals()`  `hashCode()` 



#### hashCode() 

`hashCode()` `int` 

`hashCode()` JDK  `Object`  Java  `hashCode()`  `Object`  `hashCode()`  C  C++ 

```java
public native int hashCode();
```

(key-value)****

####  hashCode

`HashSet`  `hashCode`

 Java Head First Java:

>  `HashSet` `HashSet`  `hashCode`  `hashCode`  `hashCode``HashSet`  `hashCode`  `equals()`  `hashCode` `HashSet`  `equals` 

 `hashCode()`  `equals()`

** JDK **

 `HashMap``HashSet` `hashCode()` `HastSet`

`HastSet` `HashSet`  `hashCode`  `equals()`  `hashCode` 

** `hashCode()` **

`hashCode` 

** `hashCode` **

 `hashCode()`  `hashCode` )

 

- `hashCode` 
- `hashCode` `equals()` `true`
- `hashCode` 

 `hashCode()`  `equals()` 

####  equals()  hashCode() 

 `hashCode`  `equals`  `hashCode` 

 `equals()`  `hashCode()`  `equals` `hashCode` 

****  `equals()`  `hashCode()`  `HashMap` 

**** 

- `equals`  `hashCode` 
-  `hashCode` 

 `hashCode()`  `equals()` [Java hashCode()  equals()](https://www.cnblogs.com/skywang12345/p/3324958.html)

### 

 Java5 Java  `printVariable`  0 

```java
public static void method1(String... args) {
   //......
}
```



```java
public static void method2(String arg1, String... args) {
   //......
}
```

****





```java
/**
 *  JavaGuide "" Java 
 *
 * @author Guide
 * @date 2021/12/13 16:52
 **/
public class VariableLengthArgument {

    public static void printVariable(String... args) {
        for (String s : args) {
            System.out.println(s);
        }
    }

    public static void printVariable(String arg1, String arg2) {
        System.out.println(arg1 + arg2);
    }

    public static void main(String[] args) {
        printVariable("a", "b");
        printVariable("a", "b", "c", "d");
    }
}
```



```
ab
a
b
c
d
```

Java  `class`

```java
public class VariableLengthArgument {

    public static void printVariable(String... args) {
        String[] var1 = args;
        int var2 = args.length;

        for(int var3 = 0; var3 < var2; ++var3) {
            String s = var1[var3];
            System.out.println(s);
        }

    }
    // ......
}
```

## 

### Java 

Java  8 

1. 6 
   - 4 `byte``short``int``long`
   - 2 `float``double`
2. 1 `char`
3. 1 `boolean`

 8 

|   |  |  |   |                                    |
| :-------- | :--- | :--- | :------ | ------------------------------------------ |
| `byte`    | 8    | 1    | 0       | -128 ~ 127                                 |
| `short`   | 16   | 2    | 0       | -32768 ~ 32767                             |
| `int`     | 32   | 4    | 0       | -2147483648 ~ 2147483647                   |
| `long`    | 64   | 8    | 0L      | -9223372036854775808 ~ 9223372036854775807 |
| `char`    | 16   | 2    | 'u0000' | 0 ~ 65535                                  |
| `float`   | 32   | 4    | 0f      | 1.4E-45 ~ 3.4028235E38                     |
| `double`  | 64   | 8    | 0d      | 4.9E-324 ~ 1.7976931348623157E308          |
| `boolean` | 1    |      | false   | truefalse                                |

 `boolean` JVM  1 

Java  Java Java 2.2 

****

1. Java  `long`  **L**
2. `char a = 'h'`char :`String a = "hello"` :

`Byte``Short``Integer``Long``Float``Double``Character``Boolean` 

 `Null`  `Null`

 JVM 

 Java  

>  Java   **booleanbytecharshortintfloatlongdouble******reference 

### 

Java 

`Byte`,`Short`,`Integer`,`Long`  4  **[-128127]** `Character`  **[0,127]** `Boolean`  `True` or `False`

**Integer **

```java
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i 

Web Proxy Viewer  |  New URL  |  Original Page