博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java成员变量与局部变量同名
阅读量:5255 次
发布时间:2019-06-14

本文共 1182 字,大约阅读时间需要 3 分钟。

看到成员变量和局部变量同名这个知识点的时候一开始有点懵逼,想了一下其实特别简单。

先来看一个简单的代码。

首先我定义了一个Person类。

public class Person {    private int age=1000;//定义成员变量,年龄为1000    public void setAge(int age) {        age=age;        System.out.println("方法内的年龄"+age);    }    public void sayHello() {        System.out.println("我的年龄是"+age+".");    }}

然后在主函数里面创建对象并输出。

Person p=new Person();p.setAge(20);p.sayHello();

输出结果是什么?并不是我们想象的我的年龄是20,而是下面这样:

//方法内的年龄20//我的年龄是1000.

想一下其实就很容易理解。

一句话,如果不同名,那么方法内的变量名代表成员变量;如果同名,那么方法内的变量名就只表示局部变量了,和成员变量一毛钱关系都没有了。

所以,首先当我们创建了一个Person对象p,在创建对象的时候就已经完成了成员变量的初始化了。成员变量age的初始值是1000。

当我们p.setAge(20)的时候,其实这个20只在setAge这个方法内起作用,所以输出了方法内年龄20,执行完这句话后,20就被销毁了。

然后执行sayHello,它里面的age代表的是成员变量的值,所以依旧是1000。

到这里如果还是不能理解,可以自己写代码看输出结果体会下。

 

那么,当同名的时候,我们就是要让这个变量名表示成员变量,有没有办法呢?

那就要说到this关键字了。我们把Person类改成这样:

public class Person {    private int age=1000;    public void setAge(int age) {        this.age=age;        System.out.println("方法内的年龄"+age);    }    public void sayHello() {        System.out.println("我的年龄是"+age+".");    }}

再运行代码,发现代码运行结果变成了下面这样:

//方法内的年龄20//我的年龄是20.

this表示的是当前对象。

this.age在这里具体表示p对象的age(即p对象的成员变量age)的值是20。

 

不能理解的话就多写写代码就能理解了。

转载于:https://www.cnblogs.com/chenyangsocool/p/5673639.html

你可能感兴趣的文章
修改Android开机画面
查看>>
关于 jquery 的常用面试题(转)
查看>>
POJ 1160 Post Office
查看>>
解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file...
查看>>
java面试题之select、poll和epoll的区别
查看>>
关于XAMPP Apache无法启动问题解决方案
查看>>
python中字符与ascii码转换
查看>>
mac中安装lua5.1.5
查看>>
springMVC参数传递实例
查看>>
函数进阶
查看>>
EditText输入表情图像. 看老罗android笔记
查看>>
application.yml
查看>>
杭电acm2034
查看>>
C++ STL 之 string
查看>>
图标搜集网址
查看>>
Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解
查看>>
SpringBoot29 登录逻辑、登录状态判断
查看>>
python 表格存取方法(转)
查看>>
USACO butter
查看>>
【LeetCode & 剑指offer刷题】树题8:26 树的子结构(572. Subtree of Another Tree)
查看>>