Java中变量的分类——局部变量、实例变量、静态变量
⼀. Java中变量的分类
Java中变量根据声明位置不同可以分为:局部变量和成员变量,成员变量如果使⽤static关键字修饰⼜称为静态成员变量,如果没有static修饰⼜称为实例成员变量。下⾯分别阐述⼀下他们三者之间联系和区别。
public class Variable {
//静态成员变量(静态变量)
static int x=10;
//实例成员变量(成员变量)
int y=20;
public static void main(String[] args){
//局部变量
int num=30;
}
}
⼆ .局部变量、成员变量、静态变量三者的区别
变量声明位置内存位置⽣命周期初始化局部变量⽅法中或⽅法声明上(形参)栈随着⽅法的调⽤⽽创建,随着⽅法的消失⽽消失初始化必须赋值实例变量类中⽅法外堆随着对象的创建⽽创建,随着对象的消失⽽消失有默认初始化值静态变量类中⽅法外⽅法区的静态区随着类的加载⽽加载,随着类的消失⽽消失有默认初始化什么时候使⽤静态变量?
当⼀个类的所有对象的某个“属性值”不会随着对象的改变⽽变化时,为了节省堆内存,我们可以将该属性定义为类级别的属性,也就是声明为静态变量,上升为“整个族”的数据,这样的变量不需要创建对象直接使⽤“类名”即可访问。
成员变量表⾯区别使⽤场景调⽤⽅法内存位置实例变量⽆static修饰对于类中每个对象都是特有的属性只能通过对象名调⽤堆区静态变量被static修饰对于类中每个对象⼀致的属性可以使⽤类名调⽤,也可以使⽤对象名调⽤(不推荐)⽅法区的静态区举例:
public class ManTest {
public static void main(String[] args){
Man man=new Man("⼩明");
static修饰的变量//实例变量使⽤对象名调⽤
System.out.println("名字"+man.name);
//静态变量可使⽤类名调⽤(推荐)
System.out.println("性别"+Man.sex);
//静态变量也可以通过对象名调⽤(不推荐)
System.out.println("性别"+man.sex);
}
}
class Man{
//实例变量
String name;
//静态变量
static char sex='男';
Man(){}
Man(String name){
this.name = name;
}
}
⼏点注意
1. 就近原则
局部变量和成员变量名称⼀致时,在⽅法中使⽤,采⽤的是就近原则。
2. 作⽤域
同⼀个域中变量名不能重名,不同的域变量名可以相同,java遵循就近原则会⾃动访问离他最近的数据。
关于变量的有效范围,我们记住⼀句话:出了⼤括号就不认识了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论