Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
2017-11-27 13:37
567 查看
转自: http://blog.csdn.net/s1amduncan/article/details/52089944#comments
记得刚毕业那会儿刚开始转Java的时候,这几个概念还分不太清楚, 弄了还蛮久的,现在把之前做的笔记加上现在自己的理解记录下来。
成员变量和局部变量的区别
成员变量:(类似于C中的全局变量的概念,所以也可以说是全局变量)
①成员变量定义在类中,在整个类中都可以被访问。
②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
③成员变量有默认初始化值。
局部变量:
①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
③局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
静态变量(也叫做类变量,类属性)
由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
成员变量和静态变量的区别
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
成员变量、局部变量、静态变量的区别
[java] view
plain copy
class Demo{
int x;// 非静态成员变量,又称为属性,对该类不同的对象来说,属性是不同的
static int y;// 静态成员变量,一个类中只有一个该变量,该类不同的对象共享同一个静态成员变量
public static void main(String[] args){
int m = 0;// 局部变量,是方法内部定义的变量,只在方法内部可见,在该方法结束后,由垃圾回收器自动回收
}
}
[java] view
plain copy
public class Test {
private int age; //这是成员变量
public Test(int age) { //这是构造方法
this.age = age;
}
public void setAge(int age) { //这是成员方法
this.age = age;
}
public static int getAge() { //这是全局方法,加了static关键字,成员方法就变成了全局方法
return this.age;
}
}
成员方法必须用类的实例化对象进行访问,而全局方法是直接可以用类名.方法名来访问的,构造方法则是实例化对象时进行初始化的
记得刚毕业那会儿刚开始转Java的时候,这几个概念还分不太清楚, 弄了还蛮久的,现在把之前做的笔记加上现在自己的理解记录下来。
在Java中,一个类体由2部分构成:
一部分是变量的定义;
一部分是方法的定义(一个类中可以有多个方法)
Java中的变量可以分为成员变量,全局变量
成员变量和局部变量的区别成员变量:(类似于C中的全局变量的概念,所以也可以说是全局变量)
①成员变量定义在类中,在整个类中都可以被访问。
②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
③成员变量有默认初始化值。
局部变量:
①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
③局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
静态变量(也叫做类变量,类属性)
由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
成员变量和静态变量的区别
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
列表对比:
成员变量、局部变量、静态变量的区别 | 成员变量 | 局部变量 | 静态变量 |
定义位置 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在类中,方法外 |
初始化值 | 有默认初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 |
调用方式 | 对象调用 | --- | 对象调用,类名调用 |
存储位置 | 堆中 | 栈中 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
别名 | 实例变量 | --- | 类变量 |
plain copy
class Demo{
int x;// 非静态成员变量,又称为属性,对该类不同的对象来说,属性是不同的
static int y;// 静态成员变量,一个类中只有一个该变量,该类不同的对象共享同一个静态成员变量
public static void main(String[] args){
int m = 0;// 局部变量,是方法内部定义的变量,只在方法内部可见,在该方法结束后,由垃圾回收器自动回收
}
}
Java中的方法可以分为成员方法,全局方法,构造方法
[java] viewplain copy
public class Test {
private int age; //这是成员变量
public Test(int age) { //这是构造方法
this.age = age;
}
public void setAge(int age) { //这是成员方法
this.age = age;
}
public static int getAge() { //这是全局方法,加了static关键字,成员方法就变成了全局方法
return this.age;
}
}
成员方法必须用类的实例化对象进行访问,而全局方法是直接可以用类名.方法名来访问的,构造方法则是实例化对象时进行初始化的
相关文章推荐
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- 成员变量、全局变量、实例变量、类变量、静态变量和局部变量的区别
- Java基础(五)---局部变量、全局变量、静态变量、final变量、静态常量、静态方法
- Java基础——成员变量、局部变量和静态变量的区别
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量的定义与区别
- [置顶] Java--成员变量和局部变量,成员和静态变量区别
- 牛客网Java刷题知识点之全局变量(又称成员变量,分为类变量和实例变量)、局部变量、静态变量(又称为类变量)
- java中成员变量、局部变量、全局变量的区别
- Java基础——成员变量、局部变量和静态变量的区别
- 【转】Java基础——成员变量、局部变量和静态变量的区别
- Java之成员变量、局部变量和静态变量的区别
- java中成员变量、局部变量、静态变量的区别
- Java成员变量,局部变量,全局变量的区别
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的区别
- Java基础——成员变量、局部变量和静态变量的区别
- Java基础——成员变量、局部变量和静态变量的区别
- Java中成员变量、局部变量和静态变量的区别
- Java中成员变量和局部变量的区别及构造方法的概述