JavaSE 成员变量与局部变量
来源:互联网 发布:少女前线淘宝 账号 编辑:程序博客网 时间:2024/05/22 06:13
成员变量和实例变量,类变量的区别
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
class Person { static String name; //类变量 int num; //实例变量 public void speak(int x) { int num = 10; //x和num都是局部变量 }}
B:在内存中的位置不同
实例变量:在堆内存(实例变量属于对象,对象进堆内存)
类变量:存储于方法区的静态区(类变量属于类,类进方法区)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
C:生命周期不同
实例变量:随着对象的实例创建而存在,随着实例的消失而消失
类变量:类变量随着类的加载而加载,随着类的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
public class Person{ static String name; //类变量 int num; //实例变量 public void speak(int x) { int num = 10; //局部变量 String name = "bbb"; //实例变量会被局部变量覆盖 System.out.println("1 --"+num); //采用this来作为num的限定,则会输出实例变量的值 System.out.println("2 --"+this.num); //类变量会被局部变量覆盖 System.out.println("3 --"+name); //采用类名来作为限定,则会输出类变量的值 System.out.println("4 --"+Person.name); } public static void main(String[] args){ Person p = new Person(); p.num = 9; //实例变量必须通过实例来引用 p.name = "aaa"; p.speak(3); Person p2 = new Person(); //p2依然应用Person类,依然输出aaa System.out.println("5 --"+t2.name); }}
输出:
D:初始化值不同
类变量:有默认初始化值
实例变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用
//成员变量无需显式初始化。而局部变量必须显示的初始化class Person{ //定义一个实例变量 public String name; //定义一个类变量 public static int num;}public class Test{ public static void main(String[] args){ System.out.println(Person.num); Person p = new Person(); System.out.println(p.name+"....."+p.num); }}
输出:
tip:实例变量不能在类体中先声明然后在方法中直接赋值,类变量可以
//可以运行public class Hello { static int a; //在类体中声明整型静态变量a。 public static void main(String[] args) { a=3; //在方法中对静态变量a赋值。 System.out.println("a="+a); }}
//不能运行public class Hello { int a; //在类体中声明整型实例变量a。 public static void main(String[] args) { a=3; //在方法中对实体变量a赋值。 System.out.println("a="+a); }}
//将上述代码改成这样可以运行public class Hello { int a; //在类体中声明整型实例变量a。 public static void main(String[] args) { Hello h = new Hello(); h.a = 3; //因为main方法是static的,它们只能访问static数据,所以要变成h.a。不是静态方法可以直接用a System.out.println("a="+h.a); }}
阅读全文
0 0
- JavaSE 成员变量与局部变量
- javaSE 成员变量与局部变量
- [javase学习笔记]-6.4 成员变量与局部变量
- 局部变量与成员变量
- 局部变量与成员变量
- 局部变量与成员变量
- 成员变量与局部变量
- 局部变量与成员变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量与局部变量
- 成员变量,静态变量,与局部变量
- 学习javaSE 类和对象,方法,构造方法,成员变量与局部变量
- 适配器模式
- Node.js 回调函数
- 《shell脚本学习指南》学习笔记之入门 二 grep详细解析
- bzoj1857: [Scoi2010]传送带
- Linux进程通信之共享内存
- JavaSE 成员变量与局部变量
- WPF实现Android或IOS的Tab控件效果
- 走向云计算之MapReduce原理和运行流程详解
- jquery和javascript常用方法比较
- webpack的安装与环境配置
- Scrapy爬虫实战四:糗事百科
- 【简记】Computer Networking——network layer(part three)
- leetcode561. Array Partition I
- 欢迎使用CSDN-markdown编辑器