静态变量,如何定义成员变量?
这个概念我在学习之初也有些迷惑,专门整理过这一份文档,希望对你有用。
Java中就没有全局变量这个概念,只分为成员变量和局部变量。
成员变量:Static修饰成为类变量或静态变量,还有就是方法外的变量。生命周期与类相同。局部变量:就是方法中的变量。生命周期就是再次方法中。但是,很多人学习都是先学习的C语言,C语言中存在全局变量这个概念,所以,大家对于Java中的成员变量有时候也称之为全局变量,同时也存在如下的一个约定俗成的小区别
使用static 关键字进行声明的变量叫做全局变量
在函数外面定义的变量叫做成员变量
成员变量
成员变量定义在类中,在整个类中都可以被访问。成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。成员变量有默认初始化值。局部变量
局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。局部变量没有默认初始化值 在使用变量时需要遵循的原则为:就近原则首先在局部范围找,有就使用;接着在成员位置找。静态变量(也叫做类变量,类属性)
由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
成员变量和静态变量的区别
1.两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。静态变量随着类的加载而存在,随着类的消失而消失。2.调用方式不同
成员变量只能被对象调用。静态变量可以被对象调用,还可以被类名调用。3.别名不同
成员变量也称为实例变量。静态变量也称为类变量。4.数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。什么是静态变量?
局部变量与其它三个有本质区别。 局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。 而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。 也就是说,局部变量和其它三个,最明显的区别:
1 生命周期不同
2 分配时间不同
3 分配位置不同。 而另外三个,在这几项上是相同的,之间的区别在于作用域。 全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。 静态全局变量,作用域为定义改变量的所在文件。 而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束
变量范围怎么表示?
变量的范围可以通过作用域来表示。作用域是指变量的可访问范围,即变量的有效范围。根据作用域的不同,变量可以分为以下几种:1. 全局变量(Global Variable):全局变量定义在程序的任何位置,可以被整个程序中的任何函数访问。全局变量在程序开始执行时创建,在程序结束时销毁。2. 局部变量(Local Variable):局部变量定义在函数内部或代码块内部,只能在定义它的函数或代码块中被访问。局部变量在函数调用时创建,在函数调用结束时销毁。3. 静态变量(Static Variable):静态变量是在函数内部声明和定义的变量,具有静态存储期。静态变量在函数调用时创建,在程序结束时销毁。4. 形式参数(Formal Parameter):形式参数是函数定义时声明的参数,用来接收调用该函数时传递的实际参数。形式参数的作用域是函数内部。5. 成员变量(Member Variable):成员变量是定义在类中的变量,可以被类中的任意方法访问。成员变量在创建对象时创建,在对象被销毁时销毁。需要注意的是,不同的编程语言对于变量的作用域规则可能略有不同,但通常都会遵循以上的概念。
静态变量与实例变量的区别?
静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字static声明。静态方法也是同样,可以直接调用。
实例变量:就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用,被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。
区别如下:
1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;
2.静态变量与类相关,普通变量则与实例相关
3.内存分配方式不同。
4.生命周期不同。
eclipse静态变量怎么定义?
static 块仅适合当前类的初始化工作,它本身相当于一个匿名构造方法,所以不是用来定义变量的,你只能在这里面初始静态变量而不是定义这些变量。 另外,static 按照概念来说是不是为了继承服务的。在 Java 中也有潜在的导致复杂性增加的出错机率。 比如:当父子两个类都有一个 static 方法中 name(),现在当我们使用 Parent a = new Parent(); Parent b = new Child(); Child c = new Child(); a.name(); b.name(); c.name(); 我们观察a,b,c 的输出结果就能看出来, a, b 输出是一样的,而 c 的输出却不同。所以 Eclipse 在编译这样的代码时会给出警告信息提醒你使用 Parent.name() 或 Child.name() 而不是使用变量 a,b,c.
还没有评论,来说两句吧...