成员变量和局部变量
2、从面向对象的思想来说我们又把实例变量看成一个类的属性。
3、实例变量在没有符初值时系统会自动帮我们做初始化: 整型数据初始化为 0,布尔型数据初始化为 false,对象类型初始化为 null。 实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
2、局部变量使用前必须初始化,系统不会自动给局部变量做初始化。
3、局部变量的生命范围在他所在的代码块,在重合的作用域范围内不允许两个局部变量命名冲突。注:局部变量与实例变量允许同名,在局部变量的作用域内,其优先级高于实例变量。 我们可以用 this.实例变量名 以区分局部变量。
- 成员变量:
2、从面向对象的思想来说我们又把实例变量看成一个类的属性。
3、实例变量在没有符初值时系统会自动帮我们做初始化: 整型数据初始化为 0,布尔型数据初始化为 false,对象类型初始化为 null。 实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
- 局部变量:
2、局部变量使用前必须初始化,系统不会自动给局部变量做初始化。
3、局部变量的生命范围在他所在的代码块,在重合的作用域范围内不允许两个局部变量命名冲突。注:局部变量与实例变量允许同名,在局部变量的作用域内,其优先级高于实例变量。 我们可以用 this.实例变量名 以区分局部变量。
</pre><pre name="code" class="java">//成员变量和局部变量的测试 /** * * @version 1L * @author LinkinPark * @since 2014-10-24 * @motto 梦似烟花心似水,同学少年不言情 * @desc ^成员变量直的是类范围内定义的变量,局部变量是在方法中定义的变量 * 系统加载类或者该类的实例的时,自动会为成员变量开空间,然后指定默认的初始化值 * 但是局部变量定义后,必须经过显式初始化后才能使用,系统不会执行默认的初始化 */ public class Test07 { static int a; int c=2; /** * @desc ^java允许对象来访问类成员,但是聪明的开发者应该绕开这个陷阱,类成员还是使用类作为主调好点 * @param args */ public static void main(String[] args) { int b; b = 5; //a是成员变量,默认会有初始值 System.out.println(a); //b是局部变量,不赋值的话不能直接访问 System.out.println(b); new Test07().test(); } //局部变量覆盖成员变量,要是想访问成员变量的话,可以使用this作为主调 //虽然编程允许,但是尽量避免这种局部变量和成员变量重名的情况 public void test(){ int c = 1; System.out.println(c);//1 System.out.println(this.c);//2 { String huhu = "代码块中的变量"; System.out.println(huhu); } //huhu是在上面的代码块中定义的变量,脱离了代码块不能再次被访问到 //System.out.println(huhu); } }
以下图片反应了类变量和实例变量的不同:
风流子弟曾少年,多少老死江湖前。。。