笔记
-
深入变量
- 局部变量的作用域:在开始定义的位置开始,到紧跟着结束的花括号为止
- 成员变量的作用域:在整个类中都有效
-
成员变量,可以先使用后定义(只是看起来是,从上到下的顺序,其实还是先定义后使用的),局部变量必须先定义而后才能使用
-
变量的生命周期:变量的作用域决定了变量的生命周期,说明作用域不同,生命周期就不一样。
-
什么时候使用成员变量和局部变量
- 考虑变量的生存时间,这会影响内存开销
- 扩大变量作用域,不利于提高程序的高内聚
- 开发中应该尽量缩小变量的作用范围,如此在内存中停留时间越短,性能也就更高
-
package(包)
- 语法格式: package 包名.子包名.子子包; 必须把该语句作为Java文件中,并且是第一行代码(所有代码之前).
注释是可以写在前面的
- 包名如何定义
- 不能以java开头,因为Java的安全检查机制会检查
- 包名必须遵循标识符命名规范,/全部小写
- 在企业开发中,包名有公司域名的需要倒写
- 在开发中,都是先有package,而后在package中再定义类
- import语句
- 没有使用import之前,操作不在同一个包中的类,得使用全限定名来操作.
- 编译会自动去java.lang包中去寻找使用到的类,比如String,System,所以他们不需要导入,推论:非java.lang包的类,都需要导入.
- 如果需要导入java.util中的多个包,无需逐个导入,可以使用通配符""*""
- 在Eclipse工具中,即使我们使用了通配符*,在格式化代码的时候,也会转换为N条import语句.
注意事项:
- 编译器会默认找java.lang包下的类. 但是却不会去找java.lang的子包下的类.
- 此时我们也得使用import java.lang.reflect.Method
- 通过反编译工具查看,其实所谓的静态导入也是一个语法糖/编译器级别的新特性.
- 什么是封装?
- 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);
- "信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,向外暴露方法,保证外界安全访问功能; 把所有的字段使用private私有化,不准外界访问,把方法使用public修饰,允许外界访问.
- 封装的好处
- 使调用者正确,方便地使用系统功能,防止调用者随意修改系统属性
- 提高组件的重用性
- 达到组件之间的低耦合性
- 访问权限控制
- private:表示私有的,便是类访问权限,只能在本类中访问,离开本类之后,就不能直接访问
- 不写(缺省):表示包私有,表示包访问权限,访问者的包必须和当前定义的包相同才可以访问
- protected:表示子类访问权限,同包中的可以访问,如果不同包,需要有继承关系,也可以访问
- public:表示全局的,是可以公共访问的权限,如某个字段/方法,使用了public方法,在当前项目的任何地方都是可以访问的
- 一般的:字段都使用private修饰,表达隐藏,为了安全性
- 拥有实现细节的方法,一般使用private修饰,不希望外界(调用者)看到该方法的实现细节
- 一般的,方法我们使用public修饰,供外界直接调用
- 一般的,我们不用缺省,即使要使用,也仅仅是暴露给同包中的其他类
- protected:一般,在继承关系中,父类需要把一个方法只暴露给子类
- JavaBean规范
- JavaBean 是一种JAVA语言写成的可重用组件(类)
- 必须遵循的规范
- 类必须使用public修饰
- 必须保证有公共无参数构造器,即使手动提供了带参数的构造器,也得提供无参数构造器
- 包含了属性的操作手段(给属性赋值,获取属性值)
- 成员
- 方法:Method
- 事件: event
- 属性:property