最近在看《零基础学java》看到变量分类时,上面说根据所属范围划分:
变量可分为类变量和成员变量。类变量不随产生的对象变化而变化;
成员变量则随对象不同而变化。可看了几个实例越看越混淆,求大神解答一下?
一个类的类体
一部分是变量的定义;
一部分是方法的定义(一个类中可以有多个方法)
方法内定义的变量叫局部变量,因为只能在方法内部使用,固不可以用private,public,protect来修饰。
成员变量(也叫全局变量):它分为实例变量(类的对象.变量或类的对象.方法)和类变量(static 静态变量)
class A{
int a ;//实例变量 必须是......
答案就在这里:局部变量,全局变量,成员变量,实例变量,类变量的区别
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
类变量是用static修饰的变量,它们可以通过类名直接访问或更改。
成员变量是无static修饰的变量,实例化对象的时候它们才能初始化。
类变量只初始化一次,而实例变量是和对象相关的。
这几个变量是从不同方面看的,就像看一个人的身份一样,可能是爸爸,也可能是男人,这是不同的概念。
类变量:就是写在你的类文件里的变量,它当然是不变的,除非你改了它;
成员变量:这个变量是类的成员,所以叫成员变量,当然还有成员方法;
全局变量:这从从作用范围来讲的,故名思议全局变量是作用于你程序的全局的,还有局部变量;
实例变量:和类变量对应,你将一个类实例化了,即new了,那么这个对象中的变量即实例变量;
public class Test {
private String name;//成员变量,也是全局变量
public static String age = 10; //全局变量
public void changeName() {
String n = "tomoya";//n就是局部变量
name = n;
}
}
总的来说,定义在类里的,也就是name那个位置,就是成员变量,在JAVA里全局变量和成员变量是一个意思。
定义在方法里或域里就叫做局部变量,所谓域就是{}里面,比如
public void show() {
int b = 2;//局部变量
if(true) {
int a = 1;//局部变量
}
//这个位置访问a,无效
}
//这个位置,或其他方法里访问b,无效
他的作用范围:
局部变量离开了他的域{}就无效
成员变量的范围依赖他的访问修饰符,什么是访问修饰符呢?
public
protected
private
默认,你定义时不给他访问修饰符就是默认