0020 Java学习笔记-面向对象-变量
变量分为哪些
- 成员变量:类里面,方法外面定义的变量
- 实例变量:没有用static修饰的变量,属于对象;存在期:创建实例~销毁实例;作用域:与该实例的生存范围相同
- 类变量:用static修饰的变量,属于类;存在期:类的准备阶段~销毁该类;作用域:与类的生存范围相同
- 局部变量:
- 形参:方法签名中声明的变量;作用域:整个方法内
- 方法局部变量:方法体内部声明的变量;作用域:定义该变量之处~方法结束
- 代码块局部变量:由花括号括起来的代码块内部声明的变量;作用域:定义该变量之处~代码块结束
- 变量命名:
- 有意义;首字母小写+驼峰命名法
成员变量
- 在书写类时,不需要将成员变量初始化
- 在类的准备阶段(类变量)或者创建实例(实例变量)时,会进行默认初始化
局部变量
- 形参:在调用方法时,会传入参数,因而不需要初始赋值
- 方法局部变量+代码块局部变量:在使用前,得先给个初始值
- 局部变量只保存基本类型或者对象的引用,所占的内存区域较小
变量的重名
- 成员变量不能重名,即使一个类变量,一个实例变量
- 形参与形参不能重名
- 方法局部变量不能重名
- 形参与方法局部变量不能重名
- 代码块内部的变量只在代码块内部有效,不能与外部的变量重名
- 成员变量与局部变量可以重名,成员变量会被局部变量覆盖;要做区分时,用this.成员变量或者类名.成员变量来访问成员变量
变量的使用规则
- 使用成员变量:
- 用于描述某个类或对象的固有信息;类相关的变量定义为类变量,比如人都有2个眼睛;实例相关的变量定义为实例变量
- 保存某个类或对象的状态信息的变量
- 需要在多个方法间进行共享的变量
- 局部变量:
- 尽可能缩小局部变量的作用范围,在内存中的停留时间越短,性能越好
其他
- 类在使用之前要经过:类加载、类验证、类准备、类解析、类初始化等阶段
- 栈内存中的变量,无序系统垃圾回收,随方法或代码块的运行结束而结束
0020 Java学习笔记-面向对象-变量的更多相关文章
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 程序设计基础·Java学习笔记·面向对象(下)
Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...
- 程序设计基础·Java学习笔记·面向对象(上)
Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...
- 0021 Java学习笔记-面向对象-包、构造器
封装 面向对象的三大特征: 封装 继承 多态 封装: 将对象的状态信息隐藏,不允许外部程序直接访问 通过该类提供的方法来访问和操作 有啥用: 隐藏类的实现细节 在方法中加入控制逻辑,限制对成员变量的不 ...
- 0029 Java学习笔记-面向对象-枚举类
可以创建几个对象? n多个:大部分的类,都可以随意创建对象,只要内存不爆掉 1个:比如单例类 有限的几个:采用单例类的设计思路,可以只允许创建少数的几个特定的对象:还有就是枚举类. 创建少数几个对象, ...
- 0019 Java学习笔记-面向对象-方法
方法属于谁 方法要么属于类,要么属于对象 static修饰的方法属于类 没有static修饰的方法属于对象 方法只能定义在类里面,不能独立定义 不能独立的执行方法,要么通过类调用,要么通过方法调用 一 ...
随机推荐
- python flask detect browser language
python flask detect browser language No problem. We won't show you that ad again. Why didn't you l ...
- JAVA实现的微信扫描二维码支付
吐槽一下 支付项目采用springMvc+Dubbo架构实现,只对外提供接口. 话说,为什么微信支付比支付宝来的晚了那么一点,一句话,那一阵挺忙的,然后就没有时间整理,最近做完支付宝支付,顺便也把微信 ...
- Scalaz(29)- Free :Coyoneda - Functor for free
很多时候我们会遇到一些高阶类型F[_],但又无法实现它的map函数,也就是虽然形似但F不可能成为Functor.看看下面的例子: trait Interact[A] case class Ask(pr ...
- UVA 10089 Repackaging 数学问题
大致题意:给出几个包裹,每个包裹都包装好了3种大小的杯子.现在要重新包装,使向量 a[1]*(s[1][1],s[1][2],s[1][3])+a[2]*(s[2][1],s[2][2],s[2][3 ...
- [moka同学笔记]Yii下国家省市三级联动
第一次做省市三级联动时候遇到了坑,感觉还是自己太菜.头疼了很久研究了很久,最后终于发现了问题.大致总结一下思路 在控制器中实例化model,然后在视图中渲染所有国家,当选取国家时候,ajax通过 id ...
- 七个结构模式之桥接模式(Bridge Pattern)
问题: 当存在多个独立的变化维度时,如果仍采用多层继承结构,会急剧的增加类的个数,因此可以考虑将各个维度分类,使他们不相互影响. 定义: 将抽象部分与它的实现部分进行分离,抽象部分只保留最为本质的部分 ...
- css知多少(3)——样式来源与层叠规则
上一节<css知多少(2)——学习css的思路>有几个人留言表示思路很好.继续期待,而且收到了9个赞,我还是比较欣慰的.没看过的朋友建议先去看看上一节. 这一节就开始实践上一节的思路! 1 ...
- C#如何在DataGridViewCell中自定义脚本编辑器
上一篇博文探讨了如何自定义DataGridViewColumn实现一个TreeViewColumn来在DataGridView控件中显示TreeView控件,其实我们还可以继续发挥想象,自定义其他的列 ...
- 对jQuery选择器的总结
jQuery基础选择器 $("div*")获取div下面的所有元素 $(".red,.green").html("怎么") // 需要注意的 ...
- 【服务器】CentOS下部署运行NodeJs Web App
NodeJs Web App测试完成后,要怎么部署呢?介绍两个不错的方案 已知以下情景: 我要为 「kenniu」这个项目做配置 它的入口文件在 「/path/to/entry.js」 运行的User ...