>[success] # 全局变量 和 变量
1. 在类中的位置不同
* 成员变量:在类中方法外
* 局部变量:在方法、构造方法、语句块中定义的变量
2. 在内存中的位置不同
* 成员变量:在堆内存
* 局部变量:在栈内存
3. 生命周期不同
* 成员变量:随着对象的创建而存在,随着对象的消失而消失
* 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4. 初始化值不同
* 成员变量:有默认初始化值,这就是为什么,初始化对象时候可以是空参构造函数
| 数据类类 | 默认值 |
| --- | --- |
| byte、short、int、long (基本类型) | 0 |
| float、double (基本类型) | 0.0 |
| boolean (基本类型)| false |
| 类、接口、数组、String (引用类型) | null |
* 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
*****
![](https://img.kancloud.cn/09/48/09480298f36f3ed6eac7936fa5a71402_983x375.png)
>[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 -- 用法