全局变量和局部变量初始化及默认值探究

时间:2022-11-06 19:36:24
public class VariableTest {
class Person {
private String familyName;
private String lastName = "33";
private int age;
private Integer gender;

public String getFamilyName() {
return familyName;
}

public void setFamilyName(String familyName) {
this.familyName = familyName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Integer getGender() {
return gender;
}

public void setGender(Integer gender) {
this.gender = gender;
}

@Override
public String toString() {
return "Person [familyName=" + familyName + ", lastName=" + lastName + ", age=" + age + ", gender=" + gender
+ "]";
}
}

@Test
public void propertyInitTest() {
// private String familyName;
// private String lastName = "";
// private int age;
// private Integer gender;
Person person = new Person();
System.out.println(person);// Person [familyName=null, lastName=, age=0,
// gender=null]
String lastName = person.getLastName();
if ("".equals(lastName)) {
System.out.println("string类型全局变量初始化值");
}
String dd;
// System.out.println(dd);
}
}

首先应该了解的是,在类中声明的变量叫做全局变量(global variable),在方法中声明的变量叫做局部变量(local variable)。

        全局变量在声明时可以赋值也可以不赋值。如果赋值的话,第一次使用时使用的是所赋的值;如果不赋值的话,则第一次使用时使用的是全局变量的默认值:引用类型(String,Integer,Boolean等包装类型)的变量默认值都是null,基本类型的变量默认值则不一样,int型变量默认值是0,boolean型变量默认值是false

       局部变量在声明时也是可以赋值或者不赋值,但是在使用之前一定要赋值,否则在使用的时候会报编译错误的,说 The local variable dd may not have been initialized。

       总结来说,全局变量在使用前不必赋值,没赋值的话用默认值,然而局部变量在使用前必须赋值。