Hello,大家好!我是程序员阿飞!今天呢,告诉大家一个好消息以及一个坏消息。好消息是我拿到了第一家公司的offer,坏消息是因为各种原图最后拒绝了。总之,希望这家公司以后的发展越来越好吧!好了,进入今天的主题:变量。
1、类变量、成员变量和局部变量
类变量:定义在类中,方法体之外。但是必须有static来修饰变量,静态成员属于整个类。可以通过对象名或者类名来调用。
public class Test{
static int i = 0; //类变量
public void print(){
//其他代码
}
}
成员变量:定义在类中,方法体之外。成员变量在创建对象时实例化,同时可被类中的方法、构造方法或者特定的语句块访问。
public calss Test{
int i = 0;//成员变量
public void print(){
//其他代码
}
}
局部变量:在方法、构造方法以及语句块中定义的变量,其声明和初始化在方法中实现,在方法结束后自动销毁。
public calss Test{
public void print(){
int i = 0;//局部变量
//其他代码
}
}
成员变量和类变量的区别:
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
参考地址:
2、成员变量和方法作用域
同类 | 同包 | 子类 | 其他包 | |
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |