首页 > 基础资料 博客日记
【Java 学习】详讲 局部变量、成员变量
2024-12-30 03:00:09基础资料围观58次
本篇文章分享【Java 学习】详讲 局部变量、成员变量,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
1. 什么是成员变量?什么是局部变量?
局部变量和成员变量是两种常见的变量类型,它们在作用域、生命周期、初始化等方面有显著的区别。理解这两者的区别对于编写清晰和高效的 Java 程序至关重要。
-
创建局部变量,然后打印局部变量:
public static void main(String[] args){ String brand; // 品牌 String color ; // 颜色 int memory; // 内存 System.out.println("brand:"+ brand); System.out.println("color:"+ color); System.out.println("memory:"+ memory); }
不初始化就会报错。 -
创建一个类,在类中创建成员变量,然后创建对象,打印出对象的成员变量:
public class Phone { String brand; // 品牌 String color ; // 颜色 int memory; // 内存 // 程序的开始 public static void main(String[] args){ Phone p = new Phone(); System.out.println("brand:"+ p.brand); System.out.println("color:"+p.color); System.out.println("memory:"+p.memory); } }
不初始化,而打印出了值。
通过上述的两个测试,我们可以发现,在类中创建的成员变量有默认值,即,成员变量不用初始化就会有一个值,而局部变量必须手动赋值。
2. 成员变量
2.1 定义和特点
成员变量是类中的字段(属性),它们是类的组成部分。
成员变量有两种类型:
- 实例变量 (Instance Variables):属于类的实例(对象),每个对象有一份独立的实例变量。
- 类变量 (Class Variables):使用 static 关键字声明,属于类本身,而不是类的任何实例。
2.2 实例变量
- 实例变量是类中定义的字段,每个类的实例(对象)都有自己的实例变量副本。
- 实例变量在对象创建时被分配内存,每个对象都有独立的实例变量。
- 实例变量具有默认值:如果未显式初始化,实例变量会根据其类型自动赋予默认值(例如,int 类型默认为 0,boolean 默认为 false,对象引用类型默认为 null)。
- 实例变量在类的实例化期间存在,当对象被销毁时,实例变量也会被销毁。
示例:
public class Example {
private int x; // 实例变量 默认值为0
public void printX() {
System.out.println(x); // 访问实例变量
}
}
在这个例子中,x
是实例变量。每当你创建一个 Example
对象时,都会为每个对象分配一个 x 变量,并且每个对象有自己的 x 值。
2.3 类变量
- 类变量使用 static 关键字声明,它们属于类本身,而不是类的实例。
- 类变量在类加载时就会被初始化,并且所有类的实例共享同一个类变量。
- 类变量有默认值,如果未显式初始化,它们也会被赋予默认值(与实例变量相同)。
示例:
public class Example {
static int count; // 类变量
public void increment() {
count++; // 访问类变量
}
}
在这个例子中,count
是类变量。所有Example
类的实例共享同一个 count 变量,类变量在类加载时初始化。
2.4 成员变量的默认值
数据类型 | 默认值 |
---|---|
byte | 0 |
char | ‘\u0000’ |
short | 0 |
int | 0 |
long | 0L |
boolean | false |
float | 0.0f |
double | 0.0 |
reference | null |
3. 局部变量
3.1 定义和特点
- 局部变量是在方法、构造方法、或者代码块内定义的变量。
- 局部变量的作用域仅限于它们被声明的代码块或方法。
- 局部变量没有默认值,必须在使用前初始化。
- 局部变量的生命周期从其定义开始,到方法或者代码块执行完毕时结束。换句话说,局部变量只存在于方法或代码块的执行过程中,一旦方法返回或代码块执行完毕,局部变量会被销毁。
3.2 示例和说明
public class Example {
public void myMethod() {
int x = 10; // x 是局部变量 必须要被初始化
System.out.println(x); // 可以使用局部变量
}
}
在这个例子中,x
是局部变量,它只在 myMethod()
方法内部存在。当方法执行完毕,x
会被销毁。
关键特点:
- 作用域:局部变量的作用域限制在其所在的方法、构造方法或代码块内。
- 初始化:局部变量在使用前必须被显式初始化。否则,编译器会报错。
- 生命周期:局部变量的生命周期是方法或者代码块的执行周期,即方法/代码块开始执行时创建,结束时销毁。
注意事项:
- 局部变量的作用域仅限于方法内,因此它不能被方法外部访问。
- 局部变量不能声明为 static,因为它的生命周期与方法的调用有关,而不是与类的实例或类本身的生命周期有关。
4. 局部变量 vs 成员变量
特性 | 局部变量 | 成员变量 (实例变量/类变量) |
---|---|---|
定义位置 | 方法、构造器、代码块中 | 类中,方法外 |
初始化 | 必须显式初始化 | 会自动初始化为默认值(实例变量/类变量) |
作用域 | 仅限于所在的方法/代码块 | 实例变量:限于对象;类变量:限于类 |
生命周期 | 方法/代码块执行期间 | 实例变量:对象的生命周期;类变量:类的生命周期 |
访问修饰符 | 无法使用访问修饰符 | 可以使用访问修饰符 public 、private 等 |
是否与类相关 | 无 | 实例变量与对象相关;类变量与类本身相关 |
静态关键字 | 不可以是 static | 类变量必须是 static |
局部变量:只在方法、构造方法、或代码块内有效,必须显式初始化,并且生命周期仅限于方法或代码块执行时。
成员变量:包括实例变量和类变量,实例变量属于对象,类变量属于类,成员变量有默认值,生命周期较长,且可以使用访问修饰符来控制访问权限。
文章来源:https://blog.csdn.net/2302_79527141/article/details/144551859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: