对象有状态和行为,对象影响状态,状态影响行为

简单来说,就是向方法中传入不同的参数(包括个数,类型),可以影响某个实例的实例变量,也可以做出不同行为(比如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:

真正字面意义上判断相等,包括类型相同

posted on 2025-02-07 22:41  fafrkvit  阅读(11)  评论(0)    收藏  举报