Java 成员变量和局部变量

时间:2023-02-15 13:14:39

面向对象主要用到的两种类型的变量: 成员变量和局部变量。
一、成员变量

在类中定义,用来描述对象将会有什么

二、局部变量

在类的方法中定义,在方法中用于临时保存数据

三、成员变量和局部变量的区别

1、作用域不同
局部变量的作用域仅局限于定义它的方法(即方法的开始和方法的结束)
成员变量的作用域在它整个类的内部是可见的(即该类内部的方法都是可见的)

2、初始值不同
在Java程序中,系统会给成员变量一个初始值,不会给局部变量初始值。这是因为成员变量存放在内存中的堆区,局部变量存放于内存中的栈区。当我们在当前方法中定义个局部变量的时候,必须手动给成员变量一个初始值,否则会编译不通过。

提示如下信息:
localMemorySize 这个局部变量没被赋初始值

The local variable **localMemorySize** may not have been initialized

3、就近原则
当局部变量和成员变量同名时,局部变量具有更高的优先级。

4、关于重复声明

在同一个方法中,不允许有同名的局部变量
在不同方法中,可以有同名的局部变量

四、举例
定义一个类,名字Telephone

public class Telephone {
//定义一个成员变量
int memorySize; // 内存大小
double screenSize = 4.7; //屏幕大小
public void sendMessage(){
//定义一个局部变量
int localMemorySize = 0;
System.out.println("localMemorySize:"+localMemorySize);
System.out.println("memorySize:"+memorySize);
//就近原则
double screenSize = 5.5;
System.out.println("screenSize:"+screenSize);
}

public void Call(){
//定义一个局部变量
int localMemorySize = 0; System.out.println("localMemorySize:"+localMemorySize);
System.out.println("memorySize:"+memorySize);
}

}

在入口函数中调用:

Telephone iphone = new Telephone();
iphone.sendMessage();

输出结果:

localMemorySize:0
memorySize:0
screenSize:5.5

demo 地址: http://download.csdn.net/download/qq_18505715/9823049