>[success] # 全局變量 和 變量
1. 在類中的位置不同
* 成員變量:在類中方法外
* 局部變量:在方法、構造方法、語句塊中定義的變量
2. 在內存中的位置不同
* 成員變量:在堆內存
* 局部變量:在棧內存
3. 生命周期不同
* 成員變量:隨著對象的創建而存在,隨著對象的消失而消失
* 局部變量:隨著方法的調用而存在,隨著方法的調用完畢而消失
4. 初始化值不同
* 成員變量:有默認初始化值,這就是為什么,初始化對象時候可以是空參構造函數
| 數據類類 | 默認值 |
| --- | --- |
| byte、short、int、long (基本類型) | 0 |
| float、double (基本類型) | 0.0 |
| boolean (基本類型)| false |
| 類、接口、數組、String (引用類型) | null |
* 局部變量:沒有默認初始化值,必須定義,賦值,然后才能使用。
*****

>[success] # this
* class 中的 **this** 指向當前**對象**
* java的 **this** 可以省略,編譯器會加上`this.`的前綴
~~~
public class Person {
int age; // 成員變量
String name; // 成員變量
void setInfo() {
age = 12; // 可以省略this
this.name = "11";
}
public static void main(String[] args) {
}
}
~~~
* 當局部變量名與成員變量名相同時,在方法體中會優先使用局部變量(**就近原則**),若希望使用成員變量,則需要在成員變量的前面加上**this.的前綴**,明確要求該變量是成員變量
~~~
public class Person {
int age;
String name;
void setInfo(int age, String name) {
// age = age; // 此時 age 是形參age 這行表示 形參age 賦值給形參的age
this.name = name;// 需要 明確this 告訴形參name 賦值給對象的name 屬性
}
public static void main(String[] args) {
}
}
~~~
* **this關鍵字**除了可以通過this.的方式調用成員變量和成員方法外,還可以 作為 **方法的返回值**
~~~
public class Person {
int age;
String name;
// 指定的返回值為當前類類型
Person getPerson() {
return this; // 返回當前實列
}
public static void main(String[] args) {
}
}
~~~
* 在**構造方法**的第**一行可以使用this()的方式**來調用本類中的其它**構造方法**,通過當前的構造方法去調用**本類**中的對應的構造方法,目的是:**代碼復用**。
~~~
public class Person {
int age;
String name;
Person(int age) {
this.age = age;
}
Person() {
// 我調用有參的構造函數
this(10);
}
public static void main(String[] args) {
}
}
~~~
* **this**不能出現在靜態方法中,**this**能出現在實例方法和構造方法中
- windows -- 環境變量
- Vscode -- 編寫java
- 初始java
- java -- 關鍵字
- 編寫第一個java程序
- java -- 注釋
- 計算機存儲 -- 進制
- java -- 類型
- java -- 變量
- 數字類型
- 布爾類型
- 字符類型
- 類型轉換
- 雙等比較是什么
- java -- 運算符
- 算數運算符
- 字符串拼接
- 關系/比較運算符
- 自增減運算符
- 邏輯運算符
- 三目運算
- 賦值運算符
- 移位運算符
- 位運算符
- 運算符優先級
- java -- 流程控制語句
- if /else if /if -- 判斷
- switch case分支結構
- for -- 循環
- 用雙重for循環
- while -- 循環
- do while -- 循環
- 案例練習
- java -- 數組
- 數組的存儲
- 數組的增刪改查
- 數組的特點
- 數組案例
- 二維數組
- 數組的工具方法
- java -- 方法
- java -- 方法的重載
- java -- 方法的調用流程
- java -- 類方法傳參注意事項
- java -- 方法練習案例
- 對比 return break continue
- for each循環
- java -- 基礎練習
- java -- 面向對象
- java -- 創建類和對象
- java -- 訪問控制符
- java -- 類成員方法
- java -- 構造方法
- java -- this
- java -- 封裝
- java -- 對象內存圖
- java -- 創建對象案例
- java -- static
- java -- 繼承
- super -- 關鍵字
- java -- 構造塊和靜態代碼塊
- java -- 重寫
- java -- final
- java -- 多態
- java -- 抽象類
- java -- 接口
- 引用類型數據轉換
- 綜合案例
- java -- 內部類
- java -- 回調模式
- java -- 枚舉類型
- java -- switch 使用枚舉
- java -- 枚舉方法使用
- java -- 枚舉類實現接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 遞歸練習
- java -- 設計模式
- 單例模式
- java -- 注解
- java -- 元注解
- Java -- 核心類庫
- java -- 處理字符串
- Java -- String
- String -- 常用方法
- String -- 正則
- Java -- StringBuilder 和 StringBuffer
- 知識點
- Java -- StringJoiner 字符串拼接
- 練習題
- 字符串的總結
- Java -- 包裝類
- Integer
- Double
- Boolean
- Character
- java -- 集合類
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 獲取當前時間戳
- Java -- 異常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法