疯狂java笔记——变量(成员变量和局部变量)

所有变量

--成员变量

--局部变量

成员变量

--实例变量(不以static修饰)

--类变量(以static修饰)

局部变量

--形参(方法签名中定义的变量)

--方法局部变量(在方法内定义)

--代码块局部变量(在代码块内定义)

代码块局部变量

public class BlockTest

{

public static void main(String[] args)

{

{

// 定义一个代码块局部变量a

int a;

// 下面代码将出现错误,因为a变量还未初始化

//System.out.println("代码块局部变量a的值:" + a);

// 为a变量赋初始值,也就是进行初始化

a = 5;

System.out.println("代码块局部变量a的值:" + a);

}

// 下面试图访问的a变量并不存在

//System.out.println(a);

}

}

成员变量的作用范围是整个类,一个类不能有相同名的成员变量,即使一个是类变量一个是实例变量也不行。

一个方法不能定义两个相同的方法局部变量,方法局部变量与形参也不能同名。

同一方法中不同代码块内的代码局部变量可以同名。

如果先定义代码块局部变量,后定义方法局部变量,也可以相同。

java容许方法局部变量和成员变量同名,局部变量会覆盖成员变量。

public class VariableOverrideTest

{

// 定义一个name实例变量

private String name = "李刚";

// 定义一个price类变量

private static double price = 78.0;

// 主方法,程序的入口

public static void main(String[] args)

{

// 方法里的局部变量,局部变量覆盖成员变量

int price = 65;

// 直接访问price变量,将输出price局部变量的值:65

System.out.println(price);

// 使用类名作为price变量的限定,

// 将输出price类变量的值:78.0

System.out.println(VariableOverrideTest.price);

// 运行info方法

new VariableOverrideTest().info();

}

public void info()

{

// 方法里的局部变量,局部变量覆盖成员变量

String name = "孙悟空";

// 直接访问name变量,将输出name局部变量的值:"孙悟空"

System.out.println(name);

// 使用this来作为name变量的限定,

// 将输出name实例变量的值:"李刚"

System.out.println(this.name);

}

}

猜你喜欢

转载自blog.csdn.net/qq_36332133/article/details/81182687