# æ·±å
¥çè§£ Java åé
* [æ·±å
¥çè§£ Java åé](#æ·±å
¥çè§£-java-åé)
* [åéæ±æ»](#åéæ±æ»)
* [å®ä¾åé](#å®ä¾åé)
* [å¦ä½è¯å«å®ä¾åé](#å¦ä½è¯å«å®ä¾åé)
* [å®ä¾åéçç¹ç¹](#å®ä¾åéçç¹ç¹)
* [å
¨å±åé](#å
¨å±åé)
* [éæåé](#éæåé)
* [éæåéçç¹ç¹](#éæåéçç¹ç¹)
* [ç±»åé](#ç±»åé)
* [å±é¨åé](#å±é¨åé)
* [æååé](#æååé)
* [常é](#常é)
* [éªè¯è¿ç¨](#éªè¯è¿ç¨)
* [bilibili](#bilibili)
ç½ä¸ç½åäºå¾å¤å
³äºåéççè§£ï¼è¯è ä¸é½ï¼ä¸ç¥éåªäºæ¯å¯¹çï¼åªäºæ¯éçï¼æä»¥ç¬è
å°±è¿äºå客åèªå·±ççè§£ååºè¿ç¯æç« ï¼å¦ææä¸å¯¹çå°æ¹ï¼å¸æè¯»è
è½å¤ææ£ï¼æè°¢ã

å鿝æä»¬ç»å¸¸ç¨å°çä¸ç§ï¼æå¨åå¦ Java çæ¶åï¼ä¹ç»å¸¸è¢«åç§åéçæ¦å¿µæç£¨ï¼å½æ¶å¹¶æ²¡æç»æ ï¼ä½æ¯æå¨åä¸ç¯ç±»ä¼¼çæç« ä¸ï¼æ³æåéä½ä¸ºä¸ç§å°æ 颿¥ç®è¿°ä¸ä¸ï¼ä½æ¯åç°ï¼åéè¿ä¸ªæ¦å¿µè¿æ¯æ¯è¾ç¹ççï¼æ¬ç¯æç« å°±æ¥æ·±å
¥è®¤è¯ä¸ä¸ Java ä¸è¿äºåéçæ¦å¿µ
## åéæ±æ»
æä»¥ï¼å°åºæåªäºåéçæ¦å¿µå¢ï¼è·ä»ä¸ºæ¢ï¼ç®åå·²ç¥çåéä¸»è¦æ
* å®ä¾åé
* å
¨å±åé
* éæåé
* ç±»åé
* å±é¨åé
* æååé
* 常é
ä¸é¢æä»¬å°±éç¨å个å»ç ´çæ¹å¼æ¥è®¤è¯æ¯ä¸ªæ¦å¿µ
### å®ä¾åé
å®ä¾åéå被称为`Instance variables`ãä¸ä½¿ç¨ `static` å
³é®åå®ä¹ï¼å¹¶ä¸å¨ä»»ä½æ¹æ³ãæé æ¹æ³ãåä¹å¤çåé齿¯`å®ä¾åé`ãå®ä¾åé齿¯åºäºç¹å®å®ä¾çï¼å®ä¾åéä¸ä¼å¨å®ä¾ä¹é´å
±äº«ï¼ä¹å°±æ¯è¯´ï¼æ¯ä¸ä¸ªå¯¹è±¡çå®ä¾é½æèªå·±çä¸ä¸ªå®ä¾åéãä¸é¢æ¯å®ä¾åéçä¸ä¸ªä¾å
```java
class Fruits {
public String fruitName; // å
·æå
Œ
±è®¿é®æéç fruitName;
private int fruitNum; // å
·æç§æè®¿é®æéç fruitNum;
}
```
ä½ å¯ä»¥ä½¿ç¨ä¸é¢è¿ç§æ¹å¼è¿è¡å®ä¾åéçè°ç¨
```java
public class Fruits {
public String fruitName;
private int fruitNum;
public static void main(String[] args) {
Fruits fruits = new Fruits();
fruits.fruitName = "strawberry";
fruits.fruitNum = 100;
}
}
```
#### å¦ä½è¯å«å®ä¾åé
é£ä¹æå¦ä½ç¥éä¸ä¸ªåé宿¯å®ä¾åéå¢ï¼ä¸é¢æ¯ä¸äºå
³äºå®ä¾åéçå®ä¹è§å
* å®ä¾åéå¯ä»¥ä½¿ç¨åç§è®¿é®ä¿®é¥°ç¬¦è¿è¡ä¿®é¥°ï¼**publicãprotectedãdefaultãprivate**
* å®ä¾åéå¯ä»¥ä½¿ç¨ `transientãfinal` å
³é®åè¿è¡ä¿®é¥°
* å®ä¾åéä¸å¯ä»¥ä½¿ç¨ `abstractãsynchronizedãstrictfpãnativeãstatic`å
³é®åè¿è¡ä¿®é¥°
å®ä¾åé带æé»è®¤å¼ï¼ä¹å°±æ¯è¯´ï¼å®ä¾åéä¸ç¨åå§åå°±è½ä½¿ç¨ãä¸é¢æ¯å¸¸ç¨å®ä¾åéçåå§å¼

#### å®ä¾åéçç¹ç¹
ä¸é¢æä»¬äºè§£äºå®ä¾åéçåºæ¬ç¹å¾åå¦ä½åºåå®ä¾åéï¼ä¸é¢æä»¬æ¥è®²ä¸ä¸å®ä¾åéçç¹ç¹ã
* å®ä¾åéçåªè½å¨ç±»ä¸å£°æï¼ä½æ¯å¨æ¹æ³ãæé 彿°æä»»ä½åä¹å¤ã
* å½å¨ä¸ºå ä¸å¯¹è±¡åé
ç©ºé´æ¶ï¼å°ä¸ºæ¯ä¸ªå®ä¾åéåé
ä¸ååºåã
* å®ä¾åéåªè½éè¿å建对象æ¥ä½¿ç¨ï¼å½ä½¿ç¨ `new` å
³é®åè¿è¡å建对象æ¶ï¼å®ä¾åéåæ¶ä¹è¢«å建ï¼å½åå¾åæ¶å¨åæ¶å¯¹è±¡æ¶ï¼å®ä¾åéä¹ä¼è¢«éæ¯ã
* å®ä¾åéå¯ä»¥ä½¿ç¨è®¿é®`修饰符`æ¥ä¿®é¥°
* å®ä¾åéä¸ç¨å¼ºå¶åå§åï¼å®æèªå·±çé»è®¤å¼ã
* æ¯ä¸ªå¯¹è±¡é½æèªå·±çä¸ä¸ªå®ä¾åéç坿¬ï¼å æ¤å¨ä¸ä¸ªå¯¹è±¡ä¸ä¿®æ¹åéä¸ä¼å¯¹å
¶ä»å¯¹è±¡ä¸çå®ä¾åéé æå½±å
* å®ä¾åéåªè½éè¿å建对象å¼ç¨æ¥ä½¿ç¨ã
### å
¨å±åé
å
¨å±åéå被称为`Global variables`ãå¦æä½ æå
¶ä»è¯è¨çç¼ç¨ç»éªï¼æ¯å¦ CãC++ çè¯ï¼ä½ 伿¥è§¦å°å
¨å±åéè¿ä¸ªæ¦å¿µï¼ä½ å¯ä»¥ä½¿ç¨ä¸é¢ä»£ç æ¥å建å
¨å±åé
```c
#include
// å
¨å±åé
int A;
int B;
int Add()
{
return A + B;
}
```
使¯å¨ Java ä¸ï¼**æ¯ä¸åå¨å
¨å±åéç**ãå 为 Java æ¯ä¸é¨é¢å对象çç¼ç¨è¯è¨ï¼ææçå
容齿¯å±äºç±»çä¸é¨åãJava è¿ä¹åçåå æ¯ä¸ºäºé²æ¢æ°æ®åç±»æå被å
¶ä»ç¨åºçå
¶ä»é¨åæææè
æ æçä¿®æ¹ãæä»¥å¨ Java ä¸ï¼ä½¿ç¨ `éæåé` æ¥èµ·å°å
¨å±è®¿é®çç®çã
### éæåé
éæåéå被称为`Static variables`ãéæåéçå®ä¹æ¯è¾ç®åï¼éæå鿝å±äºè¯¥`ç±»`çåéï¼å®æ¯ç± `static` å
³é®åæ¥ä¿®é¥°çãstatic 修饰çåéå±äºéæåéï¼å®åªè½å®ä¹å¨ç±»çå
é¨ãæ¹æ³çå¤é¨ã
#### éæåéçç¹ç¹
* éæåéåªè½ä½¿ç¨ static å
³é®åè¿è¡ä¿®é¥°ï¼å®ä¸è½å¨æ¹æ³ä¸è¿è¡å£°æï¼ä¸è®ºæ¯éææ¹æ³è¿æ¯ééææ¹æ³ã

* éæåéä¼å¨ç¨åºè¿è¡åè¿è¡åå§åï¼å¹¶ä¸åªåå§å䏿¬¡ã**éæåé伿ä¸ä¸ªåå§å顺åºï¼æä»¬åé¢è¯´**ã
* éæåéçææå®ä¾å
±äº«åä¸ä¸ªå¯æ¬ãä¹å°±æ¯è¯´ï¼éæåéåªæä¸ä¸ªï¼å®ä¸ä¼éç对象å®ä¾çå建èè¿è¡å¯æ¬æ·è´
* éæåéå¯ä»¥éè¿`ç±»å.åéå` è¿è¡è®¿é®ï¼å¹¶ä¸ä¸éè¦å建任ä½å¯¹è±¡å°±è½è®¿é®ã
```java
public class Fruits {
public String fruitName;
private int fruitNum;
static String fruitType;
public static void main(String[] args) {
Fruits.fruitType = "apple"; // ç±»å.åéå
System.out.println(fruitType);
}
}
```
* å¯ä»¥å¨`ééææ¹æ³` ä¸ä½¿ç¨éæåé
### ç±»åé
ç±»åéå被称为 `Class variables`å¨ Java ä¸ï¼ç±»åéå°±æ¯éæåéï¼å®ä»¬é½ç¨ `static` å
³é®åè¿è¡ä¿®é¥°ï¼æä»¥ï¼å¦æä½ åå¬å°è¯´éæåéçæ¶åï¼å®ä¹å°±æ¯ç±»åéã
### å±é¨åé
è¿æä¸ç§è¯´æ³ï¼è¯´ Java ä¸åªæç±»åéãå®ä¾åéåå±é¨åéãè¿ä¹å乿²¡æé®é¢ï¼å¯è½æäººä¼é®å°ï¼ä½ ææååéå叏鿾å¨åªäºï¼å«çæ¥æä»¬åé¢ä¼è¯´
å
æ¥è¯´ä¸ä¸ä»ä¹æ¯`å±é¨åé`
å±é¨åéå称为 `Local variables`ãå®æçæ¯å¨æ¹æ³ä¸ãæé å¨ä¸æè
å代ç ä¸å®ä¹çåéãå±é¨åéççå½å¨æéæ¹æ³ãæé å¨ã代ç åçæ§è¡å®æ¯è鿝ã
ä¸ç®¡ä¸é¢çä¸äºåéæ¦å¿µå¦ä½åæ¢ãå±é¨åéé½**ç«å¦æ¾ï¼åå¦éï¼è¡å¦é£ï¼å§å¦å¼**ï¼ä»å®¹åºå¯¹åç§ä¸åæç« çæ¯è¾ãçæ¯ä¸ä¸ªçäºçåéã

é£ä¹è¿ä¹å¥½çä¸è¥¿æä»¬å¯è¦ä»ç»ç ç©¶ä¸ä¸å
¶ç¹ç¹æ¯å¥
* æ ¹æ®å®ä¹å¯ç¥ï¼å±é¨åéå®ä¹å¨æ¹æ³ãæé 卿è
代ç åä¸ï¼
* ç¶åå±é¨åéççå½å¨æéæ¹æ³ãæé å¨ã代ç åçæ§è¡å®æ¯è鿝ï¼
* å±é¨åéä¸è½ä½¿ç¨è®¿é®ä¿®é¥°ç¬¦ï¼ä¾å¦å¦ä¸ä»£ç

* å±é¨åéä»
卿¹æ³ç声æãæé 彿°æè
åå
å¯è§ï¼å±é¨åéåªè½å¨è°ç¨è¿äºæ¹æ³ãæé 彿°æè
åçå
é¨ä½¿ç¨
* å±é¨åéæ²¡æé»è®¤å¼ï¼æä»¥å±é¨åéåºè¯¥å¨ç¬¬ä¸æ¬¡ä½¿ç¨æè
声æçæ¶åå°±åºè¯¥åå§å宿

### æååé
ä»ä¹ï¼æååéå¨ Java ä¸å°±æ¯å®ä¾åéï¼è¿ä¸ªç»è®ºå¯¹åï¼
### 常é

## éªè¯è¿ç¨
为äºéªè¯è¿ä¸ªç»è®ºï¼æä»¬æ±å©äºäº `stackoverflow` ç½ç«

æä»¬æç´¢ **java member variable and instance variable** 就帮æä»¬å®ä¸ºå°äºè¿ä¸ªæ é¢
å¤§è´æææ¯ï¼ä»ä¹æ¯æååéï¼æååéåå®ä¾å鿝å¦ç¸åå¢ï¼æä»¬ä¸é¢æä¸ªåç

第ä¸å¥å°±ç»åºï¼**å®ä¾åéåç±»åéé½ç§°ä¸ºæååé**ï¼ç¶åç»åºäº JDK å®ç½æå对åéçå®ä¹ãæææ¯å¨ Java ä¸ï¼åªæä¸ä¸ç±»åçåé
* å®ä¹å¨ç±»ä¸çæååé --- è¢«ç§°ä¸ºå±æ§
* å®ä¹å¨æ¹æ³ï¼å
å«æé æ¹æ³ï¼æè
å代ç ä¸çåé --- 被称为å±é¨åé
* å®ä¹å¨æ¹æ³å®ä¹ä¸çåé --- è¢«ç§°ä¸ºåæ°
å¯ãããæè®¸è¿ä¸æ¯å¾å¥½è§£å³æä»¬çé®é¢ï¼æå¸¦çé®é¢å次æ±å© JDK å®ç½æåï¼åçå°äºå
³äº `Variables` çå®ä¹

æææ¯å¨ Java ä¸ï¼åªæä¸é¢å ç§ç±»åçåéï¼å«æ¯å«çäºï¼è«éä½ æ¯å®ç½è¿é è°±ï¼ï¼
* `å®ä¾åé(ééæå±æ§)` ï¼å¤§è´ææå°±æ¯è¯´

ééæå±æ§ä¹å°±è¢«ç§°ä¸º`å®ä¾åé`ï¼å 为å®ä»¬ç弿¯ç¸å¯¹äºæ¯ä¸ªå®ä¾æ¥è¯´çãæ¢å¥è¯è¯´ï¼å¯¹äºæ¯ä¸ªå¯¹è±¡æ¥è®²ï¼å®ä¾åéçå¼é½æ¯å¯ä¸çï¼
* `ç±»åé(éæå±æ§)`ï¼ç±»åéå°±æ¯ä½¿ç¨ static 修饰符声æçåæ®µï¼è¿å°±ä¼åè¯ç¼è¯å¨ï¼æ 论该类被å®ä¾åäºå¤å°æ¬¡ï¼è¯¥åéåªåå¨ä¸ä¸ªå¯æ¬ãå¦å¤ï¼å¯ä»¥æ·»å å
³é®å final æ¥è¡¨ç¤º`常é`ã
* `å±é¨åé`ï¼æ²¡æç¹æ®çå
³é®åå°å¶å®çåé声æä¸ºå±é¨åéãç¡®å®å
¶å£°æçå®å
¨åå³äºå£°æåéçä½ç½®ã
* `åæ°`ï¼æ³ä¸ä¸æä»¬å¹³å¸¸ç¨å°æå¤çæ¹æ³æ¯ä»ä¹æ¹æ³ï¼å½ç¶æ¯ `main` æ¹æ³åï¼main æ¹æ³æ¯æä¹å®ä¹çï¼
```java
public static void main(String[] args) {}
```
å
¶ä¸ç args æ¯ä¸æ¯å°±æ¯ String çæ°ç»çåéï¼æä»¬ä¹ç§°å
¶ä¸º`åæ°`ï¼æä»¥åæ°ä¹æ²¡æå
³é®åè¿è¡å£°æï¼æ è¯å
¶ä¸ºåæ°ä¹åªæ¯åå³äºå
¶å£°æä½ç½®ã
## bilibili
æä»¥
æåäºä¸ç¯æç« 为äºç»ä½ 讲æ¸
æ¥ï¼ç°å¨ä½ åºè¯¥ç¥é Java ä¸å°åºæåªäºåéäºå§ã
å¦æä½ ç¨ static æ¥å®ä¹åéï¼åªè½æ¯ç±»åéãæè
说éæåéãèä¸å
¶å®ä¹ä½ç½®åªè½å¨ç±»ä¸ï¼æ¹æ³æä»£ç åå¤ï¼åéç坿¬åªæä¸ä¸ªã
å¦æä½ ä¸ç¨ static æ¥å£°æåéï¼é£ä¹å°±ä¼æä¸ç§åéç嫿³
* å®ä¹å¨æé æ¹æ³ã代ç åãæ¹æ³`å¤`çåé被称为å®ä¾åéï¼å®ä¾åéç坿¬æ°éåå®ä¾çæ°é䏿 ·ã
* å®ä¹å¨æ¹æ³ãæé æ¹æ³ã代ç å`å
`çåé被称为å±é¨åéï¼
* å®ä¹å¨æ¹æ³åæ°`ä¸`çåéè¢«ç§°ä¸ºåæ°ã
ä¹å°±æ¯ä¸é¢ä»£ç ææè¿°çè¿æ ·
```java
public class VariablesInJava {
int instanceVariable; // å®ä¾åé
static String staticVariable; // ç±»åé
public void method() {
String localVariable = "localVariable"; // å±é¨åé
System.out.println(localVariable);
}
public static void main(String args[]) {} //åæ°
}
```

