java类中局部变量和成员变量有啥区别?

java类中局部变量和成员变量有啥区别?

举个例子,我们可以定义一个Person类,其中有两个成员变量name和age,以及一个构造方法和一个show方法。在构造方法中,我们可以使用this关键字来引用成员变量,以区分同名的形式参数;在show方法中,我们可以定义一个局部变量message,用来存储要输出的信息。代码如下:

public class Person {
    //成员变量
    String name; //默认值为null
    int age; //默认值为0

    //构造方法
    public Person(String name, int age) {
        //使用this关键字来引用成员变量
        this.name = name;
        this.age = age;
    }

    //show方法
    public void show() {
        //局部变量,必须先赋值才能使用
        String message = "我叫" + name + ",今年" + age + "岁。";
        System.out.println(message);
    }
}

我们可以创建一个Person对象,并调用其show方法,看看输出结果:

public class Test {
    public static void main(String[] args) {
        //创建一个Person对象
        Person p = new Person("张三", 18);
        //调用show方法
        p.show();
    }
}

输出结果为:
我叫张三,今年18岁。

为什么"“我叫” + name + “,今年” + age + “岁。”;" 可以使用成员变量name和age?不需要加上this.name和this.age?

这是一个很好的问题。在Java中,如果在方法中使用成员变量的名字,而没有和局部变量或形式参数重名,那么就可以直接使用成员变量的值,不需要加上this关键字。这是因为Java会自动在方法中寻找与成员变量同名的变量,如果没有找到,就会默认使用this关键字来引用成员变量。这样可以简化代码的编写,也可以避免一些错误。

例如,在show方法中,我们使用了name和age两个成员变量的名字,而没有在方法中定义同名的局部变量或形式参数,所以Java会自动认为我们是要使用this.name和this.age的值,所以可以直接写成"“我叫” + name + “,今年” + age + “岁。”;"。

但是,如果在方法中有和成员变量同名的局部变量或形式参数,那么就必须使用this关键字来区分,否则Java会优先使用局部变量或形式参数的值,而忽略成员变量的值。这样可能会导致一些逻辑错误或意外的结果。

例如,如果我们在show方法中定义了一个局部变量name,如下:

public void show() {
    //局部变量,和成员变量同名
    String name = "李四";
    String message = "我叫" + name + ",今年" + age + "岁。";
    System.out.println(message);
}

那么,当我们调用show方法时,输出结果就会变成:

我叫李四,今年18岁。

public void show() {
    //局部变量,和成员变量同名
    String name = "李四";
    //使用this关键字来引用成员变量
    String message = "我叫" + this.name + ",今年" + age + "岁。";
    System.out.println(message);
}

这样,当我们调用show方法时,输出结果就会恢复正常:

我叫张三,今年18岁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值