对象有状态和行为,对象影响状态,状态影响行为
简单来说,就是向方法中传入不同的参数(包括个数,类型),可以影响某个实例的实例变量,也可以做出不同行为(比如void 然后System.out.println(sth));
按值传递
也就是按 副本传递
如在这个例子中
public class Test {
int q=12;
public void setQ(int q){
q=0;
}
public static void main(String[] args){
Test t=new Test();
t.setQ(12);//虽然使用了这个方法,并且在这个方法中将传入的值设置成了0,但是只是将副本的值设置成了0而已,t的q并没有改变
System.out.println(t.q);
}
}
引用传递:
针对的是对象(比如String Array 自定义对象等),传递的是内存地址,也就是说,在一个方法中对传入的对象进行修改,外部的对象本身也会发生变化
封装:
将实例变量标记为私有(private),并提供(public)公共获取方法和设置方法来完成访问控制,使实例变量不能被直接访问,实现对其保护。
简单来说,可以在public的getter,setter方法中,设置验证的条件,使实例变量不会被随意的设置成不合法的值。
public class Animial {
private int size;
private String name;
public Animial(int n,String m){
size=n;
name=m;
}
public int getSize() {
return size;
}
public void setSize(int size) {
size=0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void Barking(){
System.out.println("嗷呜~~~");
}
public void Barking(String str){
System.out.println(str);
}
}
实例变量与局部变量:
实例变量在类中声明,而不在任何方法中
局部变量在方法中声明,使用前必须初始化
方法参数也是局部变量,即使在方法的参数列表中声明,而且一定会被初始化
声明和初始化实例变量int size(=12);
可以赋值也可以不赋值,如果不赋值的话,实例变量就会得到默认值
整数,char 0
浮点数 0.0
布尔值 false
引用,String null
局部变量没有默认值,所以初始化时必须赋值,否则报错。
比较变量
==:
- 比较基本类型:仅比较二进制位
int a=1; byte c=1; if(a==c)//true - 看两个的引用是否相同
Dog a=new Dog(); Dog b=new Dog(); Dog c=a; if(a==b) //false if(c==a) //true
==本质上是比较的位模式,只要是二进制位相同,就是true
.equals:
真正字面意义上判断相等,包括类型相同
浙公网安备 33010602011771号