浅谈静态变量、成员变量、局部变量三者的区别

静态变量和成员变量的区别:

A:所属不同

静态变量:属于类,类变量
 
 成员变量:属于对象,对象变量,实例变量

B:内存位置不同

静态变量:方法区的静态区
 
 成员变量:堆内存

C:生命周期不同

静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
 
 成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失

D:调用不同

静态变量:可以通过对象名调用,也可以通过类名调用
 
 成员变量:只能通过对象名调用

成员变量和局部变量的区别:

A:在类中的位置不同

成员变量:在类中方法外
 
 局部变量:在方法定义中或者方法声明上

B:在内存中的位置不同

成员变量:在堆内存
 
 局部变量:在栈内存

C:生命周期不同

成员变量:随着对象的创建而存在,随着对象的消失而消失
 
 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

D:初始化值不同

成员变量:有默认初始化值
 
 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
 
注意事项:

局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

以上就是小编为大家带来的浅谈静态变量、成员变量、局部变量三者的区别的全部内容了,希望对大家有所帮助,多多支持我们~

(0)

相关推荐

  • Java方法的覆盖与隐藏的区别分析

    关于隐藏和覆盖的区别,要提到RTTI(run-time type identification)(运行期类型检查),也就是运行期的多态,当一个父类引用指向子类对象的时候,请看下面我编写的一段代码: 复制代码 代码如下: public class RunTime { public static void main(String[] args) {        Animal a = new Cat();        System.out.println(a.A);        System.o

  • java中重载、覆盖和隐藏三者的区别分析

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同 两同两小一大  注意:子类实例方法不能覆盖父类的

  • Java成员变量的隐藏(实例讲解)

    一.如果子类与父类中有一个相同名称的成员变量,那么子类的成员变量会不会覆盖父类的成员变量?我们看下在的例子: public class A { public int x=10; } public class B extends A { public int x=20; } public class C { public static void main(String[] args) { A a=new B(); System.out.println(a.x); //1 B b=new B();

  • 浅谈静态变量、成员变量、局部变量三者的区别

    静态变量和成员变量的区别: A:所属不同 静态变量:属于类,类变量    成员变量:属于对象,对象变量,实例变量 B:内存位置不同 静态变量:方法区的静态区    成员变量:堆内存 C:生命周期不同 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失    成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失 D:调用不同 静态变量:可以通过对象名调用,也可以通过类名调用    成员变量:只能通过对象名调用 成员变量和局部变量的区别: A:在类中的位置不同 成员变量:在类中方法

  • 浅谈python中的变量默认是什么类型

    1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) <type 'int'> 2.在Python里面变量在声明时,不需要指定变量的类型,变量的类型是动态指定的:>>> x=5 >>> type(x) <type 'int'> >>> x="wang" >>> type(x) <type 'str'> 3.也就是说变量的类型,根据给出

  • javascript学习笔记_浅谈基础语法,类型,变量

    基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或非数字值时,返回true; 3.用isFinity(x),在x不是NaN.Infinity.-Infinity时返回true; 虽然(字符串.数字.布尔值)不是对象,他们的属性是只读的,但也可以像操作对象一样来引用他们的属性和方法,原理: javascript构造一个(String.Number.Boo

  • 浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n&q

  • 浅谈js中的变量名和函数名重名

    今天骚凯问了一道变量名冲突的题目,感觉很有意思,顺便也复习一下预解析的一些知识,有不对的地方忘前辈大神指正,题目是这样的: var a=100; function a(){ console.log(a); } a(); 这个串代码执行完会报错 : a is not a function 问题来了,为什么会报这个错误呢? 这里涉及到函数和变量的预解析: 1)函数声明会置顶 2)变量声明也会置顶 3)函数声明比变量声明更置顶:(函数在变量上面) 4)变量和赋值语句一起书写,在js引擎解析时,会将其拆

  • 浅谈python内置变量-reversed(seq)

    1.简单解释就是:反转一个序列对象 例子1: def fun3(): x = [3,6,9] for i in reversed(x): print(i,end=',') fun3() 输出: >>>9,6,3, 例子2: >>> a = range(5) >>> a range(0, 5) >>> list(a) [0, 1, 2, 3, 4] >>> a1 = reversed(a) >>> l

  • 浅谈shell循环中变量的作用域问题

    最近实现了一个shell脚本,功能简单来说就是从文件中按行读取然后将所有行拼接成一行写入一个文件,关键代码如下 path_all="" cat $1 | while read line do if [ "$path_all" == "" ];then path_all=$line else path_all=$path_all,$line fi done echo $path_all > $one_file 结果执行结果竟然是空!按照常理s

  • 浅谈Python 参数与变量

    形参与实参以及位置参数 什么是形参和实参 形参:即形式参数,函数定义时指定的可以接受的参数即为形参,比如定义函数时的max(a,b)函数中的a和b就是形参 实参:即实际参数,调用函数时传递给函数参数的实际值即为实参,比如调用上面函数用 max(1, 9)函数中的1和9就是实参: 什么是位置参数 我们定义函数max(a,b)后,在调用时,我们无需指定参数名,只需max(1,9),这个时候实参入参的的位置进行匹配,也就是在函数中,a=1,b=9. 当然,如果我们不想基于位置顺序,也可以直接指定对应的

  • 浅谈vue 多个变量同时赋相同值互相影响

    首先,该项目用到了element-ui中的Tabs 标签:然后来龙去脉是酱紫的: 一个项目中需动态渲染一个列表billItemLIsts,列表中包含n组小列表,其中小列表的state_pj用于改变该小列表中的radio,于是: <el-tabs tab-position="left" style="max-height:280px;"> <el-tab-pane v-for="(itema,index) in billItemLIsts&

  • 浅谈JavaScript的全局变量与局部变量

    一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert("before for scope:"+i); //i未赋值(并不是没有声明!使用未声明变量或函数会导致致命错误从而中断脚本执行) //此时i值为undefined for(var i=0; i<3;i++){ alert("in for scope:"+i);} //i的值

随机推荐