方法的参数
1.1 传值给方法
方法会运用形参,调用的一方会传入实参。
实参是传给方法的值,当它传入方法后就成了形参。参数和局部变量是一样的,它有类型与名称,可以再方法内运用。
1.2 从方法中取返回值
如果一个方法声明有返回值,就必须返回所声明类型的值(或是与声明类型兼容的值)。
1.3 多个参数
方法可以有多个参数,在声明的时候要用逗号分开,传入时也用逗号分开。
如果方法有参数,一定要以正确数量、类型、顺序来传递参数。
1.4 拷贝传递
Java是通过值传递的,也就是说通过拷贝传递。
1.5 参数和返回值
传入的参数是对象时,引用变量携带的是远程控制而不是对象本身,传入参数时实际传入的是远程控制的拷贝。
方法只能声明单一的返回值,若需要返回3个int值,就把返回类型说明为int的数组,将值装进数组来返回。
一定要返回所声明的类型吗?
你可以返回被隐含转换成声明类型的其他类型值。例如用byte当作int类型返回。
若声明的类型容器小于想要返回的类型时,必须作明确的转换。
封装
我们需要创建Setter这个方法给所有的实例变量,并寻求某种方法强制其它程序都必须通过Setter来设定变量而不是直接地存取。
public void setHeight(int ht){
if(ht > 9){
height = ht;//这个检查可以确保高度不低于9
}
}
强迫所有人都得调用Setter,可以防止设定为无法接受的高度。
2.1 数据隐藏
如何隐藏数据:使用公有和私有两个存取修饰符。
封装的基本原则:将你的实例变量标记为私有的,并提供公有的getter与setter来控制存取动作。
初始化实例变量
3.1 声明与初始化实例变量
实例变量永远都会有默认值,如果你没有明确地赋值给实例变量,或没有调用setter,实例变量还是会有值。
integers | 0 |
floating points | 0.0 |
booleans | false |
references | null |
要记得null代表没有操作对象的远程控制,它是个引用而不是对象。
3.2 实例变量和局部变量之间的差别
实例变量是声明在类内而不是方法中
局部变量是声明在方法中的
局部变量在使用前必须初始化(否则无法编译)
局部变量没有默认值!如果在变量被初始前就要使用的话,编译器会显示错误
方法的参数基本上与局部变量是相同的——它们都是在方法中声明的(方法的参数列声明的,相较于实例变量来说也算是局部的),如果调用方法而没有赋值参数时编译器就会显示错误。
3.3 变量的比较
“==”与equals()
使用“==”来比较两个primitive主数据类型或者判断两个引用是否引用同一个对象
使用equals()来判断两个对象是否在意义上相等
像是两个String对象是否带有相同的字节组合
==只用来比对两个变量的字节组合
使用==来比较primitive主数据类型
使用==来判别两个引用是否都指向同一对象