Java类与对象需要强调的几个小知识点

1 如果局部变量的名字与成员变量相同,则成员变量被隐藏,成员变量在这个方法内暂时失效。
如果想使用被隐藏的成员变量,就要使用this关键字。

class Tom(){
    int x = 20;
    int y;
    void f(){
            int x = 5;
            y = x+x;//y的值是10,不是20
            y = x+this.x;//y的值是15
    }
}

2 成员变量有默认值,而局部变量没有默认值,因此,使用局部变量之前必须赋值。
成员变量int默认初始值是0,float初始值0.0,boolean初始值false,饮用型初始值null,

class InitFrror(){
    int x  = 10;
    int y;
    void f(){
            int m;
            x = y+m;//编译错误,m使用之前没有赋值;
    }
}

3 用final修饰的变量必须在定义时赋初值。

4 Java允许同一个类的两个对象进行赋值操作,object2 = object2;
这时,2拥有的变量和1完全一样。2中存的是1的引用。

5 (稍微有一点点难理解)若参数是引用型变量,如果在调用时改变所引用的实体,则原变量的实体同样发生改变。
如果改变参数中存放的引用,则不会影响传值的变量中存放的引用。
例子:

`//电池类“

public class Battery {
    int electricityAmount;
    Battery(int amount){//构造方法
        electricityAmount = amount;
    }
    public int getelectricityAmount(){
        return electricityAmount;
    }
}

//收音机类,打开收音机(openRadio方法),就会消耗电量,Battery类的对象也要改变

public class Raddio {
import e1.Battery;
    Battery ba;
    Raddio(Battery b)
    {
        ba = b;
    }
    public void openRadio(Battery battery){
        ba.electricityAmount = battery.electricityAmount - 10;
    }
    public int getelectricityAmount(){
        return ba.electricityAmount;
    }
}

//但是如果改变往radio传的参数nafu的引用,则不会影响传值的变量radio.ba的引用

public class e1_1 {
    public static void main(String[] args) {
        Battery nafu = new Battery(100);
        System.out.println("nafu的引用:"+nafu);
        System.out.println("南孚电池的电量:"+nafu.electricityAmount);
        Raddio radio = new Raddio(nafu);
        System.out.println("开始使用南孚电池");
        radio.openRadio(nafu);
        System.out.println("现在南孚电池的电量:"+nafu.electricityAmount);
        //nafu.electricityAmount = 10;//nafu实体改变
        //radio.ba.electricityAmount = 10;//ba实体改变
        //改变变量ba实体之后,发现原变量nafu也发生改变。或者改变nafu实体,ba实体也改变
        //System.out.println("重新赋值之后南孚电池的电量:"+nafu.electricityAmount);
        //System.out.println("重新赋值之后openRadio的电量:"+radio.getelectricityAmount());
        nafu = new Battery(1000);//nafu引用改变
        System.out.println("现在nafu的引用:"+nafu);
        System.out.println("现在nafu的电量:"+nafu.getelectricityAmount());
        System.out.println("但是不影响openRadio中传的参数nafu的引用:"+radio.ba);
        System.out.println("但是不影响openRadio中传的参数nafu的电量:"+radio.getelectricityAmount());

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值