作用域细节
728字约2分钟
2024-12-02
作用域
作用域的使用细节 一
class Exercise01 {
// 方法外面的属性(类方法里面的属性),叫做全局变量
int age = 20;
String name1 = "张三";
// 全局变量中的属性是由默认值的,而局部变量没有
int Number; // int的默认值是 0
// 下面这个也属于一个局部变量
{
int num = 30;
}
public void Detail() {
// 在成员方法里面定义的属性(或则变量),叫做局部变量
// Detail方法就是 变量a 和 变量name 的 作用域
// 也就是说在成员方法里面定义的变量只能在该成员方法中使用
// 在别的方法中是不可以使用的,除非创建该方法的对象
int a = 10;
/*
局部变量里面的变量是没有默认值的,所以不能这样写
int num1;
System.out.println("num1" + num1); 直接提示没有初始化变量
*/
String name = "jack";
}
public void Detail01() {
System.out.println("可以使用全局变量 age " + age);
}
}
public class VariadicScope {
public static void main(String[] args) {
Exercise01 a = new Exercise01();
a.Detail01();
a.Detail();
}
}
作用域的使用细节 二
- 全局变量可以被本类或则其它类使用(通过对象调用)
- 局部变量只能在本作用域中使用
- 全局变量可以加修饰符
- 局部变量不可以加修饰符
在同一个方法中,变量名不能重复
public void num() { int a = 100; /* 在同一个方法中,变量名不能重复 int a = 20; */ }
就近原则
class Exercise03 { int a = 10; public void num() { int a = 100; // 就近原则 // 那个变量 a 离自己最近则输出那个 System.out.println("a: " + a); // 输出 100 } public void num1() { // 就近原则 // 那个变量 a 离自己最近则输出那个 // 因为方法与方法之间的变量是不会互相影响的 // 所以下面的代码就不能输出 num 方法里面的 a // 所以只能输出全局变量里面的 a System.out.println("a: " + a); // 输出 10 } } public class VariadicScopeDetail01 { public static void main(String[] args) { Exercise03 a = new Exercise03(); a.num(); } }
全局变量与局部变量的生命周期
class Exercise03 { // 全局变量(就是一个类)在内存中呆的时间要久一点 // 全局变量会随着对象的创建而创建,随着对象的销毁而销毁 int a = 10; // 局部变量(就是一个方法)在内存中呆的时间要短一点 // 局部变量会随着方法的执行而创建,随着方法的接收而销毁 // 也就是说该方法被执行完之后,该方法中的所有变量就会被销毁 public void num() { int a = 100; } } public class VariadicScopeDetail01 { public static void main(String[] args) { Exercise03 a = new Exercise03(); a.num(); } }