为了账号安全,请及时绑定邮箱和手机立即绑定

java 成员变量与局部变量(隐藏的陷阱不少)

标签:
Java 设计

成员变量与局部变量:
本质:
成员变量与局部变量其实本质上都是局部变量。

区别:
一个不过是扩大范围的局部变量,同样在局部变量的下面还有更小范围的局部变量。所以我们关心的只需是她们的应用范围也就是作用域就行。

作用域:
查看应用范围,就看她们定义在哪一个大括号{}里面。他的取值范围作用域就是这一对大括号。但是大括号只能标识同一类中的作用域,类之外的作用域范围也是可以确定的。
我们除了用大括号来标识作用域之外,还可以用访问修饰符确定作用域,就好像是给变量确定访问权限一样。
图片描述
如下:
Private string name;
String adress;
Protected Char sex;
Public Int age;

同样这些成员访问修饰符还可以修饰方法,修饰类。权限一样。

除此之外还有一个特殊的修饰符,static;被他修饰过的方法叫static方法。static方法一般称作静态方法。
被他修饰过的变量叫static变量也称作静态变量。
静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
这个解释很不容易理解,我也不太理解,特别是方法。勉强解释一下希望大家指正。
内存图非常重要。
而这个可能涉及到虚拟机以及内存储存原理。简单地说,所有的变量都是局部变量,只不过作用域范围更大更小而已。但是static变量是真正的成员变量。属于整个类成员所有。
所以我们调用其他变量的时候需要考虑他的权限范围,但是调用静态变量的时候就不用。
刻意直接用类名直接调用。
类似于public。至于区别我说不好。大概刻意这样理解,public是公用的使用权,而static是公用的所有权。也不知道对不对。
这一块理解的很是模糊。

解释:
一个个大括号就好像一道道围墙将程序包围了起来。只剩下门窗,进进出出自然不方便,所以调用变量本着就近原则。

使用同属被一道围墙圈起来的变量,也就是同属大括号里面的变量。
同属一个大括号方法内,变量不能重名。就好像同一个房间尽量不要有两个一样的东西,不然就会浪费,用错。
不过不同的房间,因为不同人使用,倒是可以用同名的变量。
就好像电视机,没必要一个房间两台,但是一个房间一台确实可以。
不过你要硬要不用就近的变量,也不是不行,可以去公用的客厅,甚至更加公用的或者私人的地方。不过就必须穿越门窗围墙,特别是当就近的与远的的变量名字相同的时候,就必须以示区别。

图片描述

变量的调用:
就近的可以直接调用,没必要标示,但是从其他地方哪一个自己房间已有的变量,为了防止弄混淆。远的就必须以示区别标记出来,这就是this的功用。调用远处的成员变量,与进处的局部变量以示区别。

变量的初始值:
一般的成员变量可以看做是公共建筑,由政府统一管理,所以有一些默认的初始值,基本数据类型为0.引用类型为null。二局部变量就好比私人建筑,都是应个人的喜好要求所建造,所以没有默认的初始值,但必须有自定义的初始值。

这符合变量使用前必须数据初始化。

图片描述

点击查看更多内容
17人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消