成员变量与局部变量:
本质:
成员变量与局部变量其实本质上都是局部变量。
区别:
一个不过是扩大范围的局部变量,同样在局部变量的下面还有更小范围的局部变量。所以我们关心的只需是她们的应用范围也就是作用域就行。
作用域:
查看应用范围,就看她们定义在哪一个大括号{}里面。他的取值范围作用域就是这一对大括号。但是大括号只能标识同一类中的作用域,类之外的作用域范围也是可以确定的。
我们除了用大括号来标识作用域之外,还可以用访问修饰符确定作用域,就好像是给变量确定访问权限一样。
如下:
Private string name;
String adress;
Protected Char sex;
Public Int age;
同样这些成员访问修饰符还可以修饰方法,修饰类。权限一样。
除此之外还有一个特殊的修饰符,static;被他修饰过的方法叫static方法。static方法一般称作静态方法。
被他修饰过的变量叫static变量也称作静态变量。
静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
这个解释很不容易理解,我也不太理解,特别是方法。勉强解释一下希望大家指正。
内存图非常重要。
而这个可能涉及到虚拟机以及内存储存原理。简单地说,所有的变量都是局部变量,只不过作用域范围更大更小而已。但是static变量是真正的成员变量。属于整个类成员所有。
所以我们调用其他变量的时候需要考虑他的权限范围,但是调用静态变量的时候就不用。
刻意直接用类名直接调用。
类似于public。至于区别我说不好。大概刻意这样理解,public是公用的使用权,而static是公用的所有权。也不知道对不对。
这一块理解的很是模糊。
解释:
一个个大括号就好像一道道围墙将程序包围了起来。只剩下门窗,进进出出自然不方便,所以调用变量本着就近原则。
使用同属被一道围墙圈起来的变量,也就是同属大括号里面的变量。
同属一个大括号方法内,变量不能重名。就好像同一个房间尽量不要有两个一样的东西,不然就会浪费,用错。
不过不同的房间,因为不同人使用,倒是可以用同名的变量。
就好像电视机,没必要一个房间两台,但是一个房间一台确实可以。
不过你要硬要不用就近的变量,也不是不行,可以去公用的客厅,甚至更加公用的或者私人的地方。不过就必须穿越门窗围墙,特别是当就近的与远的的变量名字相同的时候,就必须以示区别。
变量的调用:
就近的可以直接调用,没必要标示,但是从其他地方哪一个自己房间已有的变量,为了防止弄混淆。远的就必须以示区别标记出来,这就是this的功用。调用远处的成员变量,与进处的局部变量以示区别。
变量的初始值:
一般的成员变量可以看做是公共建筑,由政府统一管理,所以有一些默认的初始值,基本数据类型为0.引用类型为null。二局部变量就好比私人建筑,都是应个人的喜好要求所建造,所以没有默认的初始值,但必须有自定义的初始值。
这符合变量使用前必须数据初始化。
热门评论
我刚开始学习java好难,网上找了好多学习的心得体会,大概有三种比较靠谱的办法,第一就是尽量自己钻研,不要不懂就问别人,要多问问自己。理解透彻了,才是学会的基础。第二,猛敲代码,编程没有其他技巧,唯手熟尔。多练习,如果那位同学手中有好的题目与答案,请不吝赐教。第三就是要学会总结。it公司的程序员都要求写日志。我们培训班被要求写读书笔记类似的日志。,现在重新开始从头学,时间比较充裕,有了总结的时间所以这些更多的算是总结。唯有这样才能融会贯通。
我觉得把成员变量改叫全局变量从字面上不是更好理解吗?
这全是教程还是笔记?