java变量同名_Java成员变量与局部变量同名
看到成员变量和局部变量同名这个知识点的时候一开始有点懵逼,想了一下其实特别简单。
先来看一个简单的代码。
首先我定义了一个Person类。
public classPerson {private int age=1000;//定义成员变量,年龄为1000
public void setAge(intage) {
age=age;
System.out.println("方法内的年龄"+age);
}public voidsayHello() {
System.out.println("我的年龄是"+age+".");
}
}
然后在主函数里面创建对象并输出。
Person p=newPerson();
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 classPerson {private int age=1000;public void setAge(intage) {this.age=age;
System.out.println("方法内的年龄"+age);
}public voidsayHello() {
System.out.println("我的年龄是"+age+".");
}
}
再运行代码,发现代码运行结果变成了下面这样:
//方法内的年龄20//我的年龄是20.
this表示的是当前对象。
this.age在这里具体表示p对象的age(即p对象的成员变量age)的值是20。
不能理解的话就多写写代码就能理解了。
java变量同名_Java成员变量与局部变量同名相关推荐
- java子类和父类有相同成员_Java -- 父类和子类拥有同名的成员变量的情况
Java – 父类和子类拥有同名的成员变量取值情况 参考文章 结论: 当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量.若对该成员变量进行操作的方法 ...
- 【Java】5.3 成员变量和局部变量
目录 成员变量 局部变量 static的标志 变量: 成员变量和局部变量 成员变量: 有static修饰:类变量,属于类本身 无static修饰:实例变量,属于实例 局部变量: 方法块里的局部变量.仅 ...
- 使用了未初始化的局部变量_Java 成员变量和局部变量
通过一个简单的 demo 我们学习下 java 中成员变量和局部变量的相关知识点. Demo 说说下面代码执行打印的结果是什么? public class MainClass {public stat ...
- 如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法
文章目录 变量相关概念 变量/常量 类变量/静态变量 成员变量/实例变量 类属性/实例属性/对象属性 什么是 field 成员变量和类变量的区别 两个变量的生命周期不同 访问方式不同 数据存储位置不同 ...
- Java反射机制——获取成员变量构造函数
2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...
- java 给static变量赋值_java static变量可以赋值吗?
java static变量可以赋值吗? 可以赋值的.static的主要作用是静态成员,指该变量的实例在内存中之存放一次.赋值是可以随便改的. java中static关键字 static是java中非常 ...
- PHP 类的静态成员变量和普通成员变量对比
有很多人可能弄不清楚,在PHP中类的静态成员变量和普通成员变量有什么区别? 1.类的静态方法只能访问静态成员变量,而不能访问非静态成员变量 2.静态成员变量不需要实例化就能访问,且访问速度快一些 3. ...
- python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...
标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...
- Java:全局变量(成员变量)与局部变量
分类细则: 变量按作用范围划分分为全局变量(成员变量)和局部变量 成员变量按调用方式划分分为实例属性与类属性 (有关实例属性与类属性的介绍见另一博文https://blog.csdn.net/Drag ...
- 第14天学习Java的笔记(成员变量和局部变量)
一个对象的内存图 package Demo1302;/** 定义一个类,用来模拟"手机"事物.** 属性:品牌.价格.颜色* 行为:打电话.发短信** 对应到类中:* 成员变量(属 ...
最新文章
- RESTful Web 服务 - 寻址
- python里面的pip是什么意思_Python-pip和conda有什么区别?
- iptables 生效_Linux防火墙Firewall和Iptables的使用
- 二叉树的前序、中序、后序遍历与创建
- 剑指offer之判断二叉树是不是平衡二叉树
- OJ7627-鸡蛋的硬度【各种dp之4】
- android 百度地图3.0定位,Android 百度地圖 SDK v3.0.0 (二) 定位與結合方向傳感器...
- Linux打印介绍【转贴】
- 反编译Silverlight项目
- python界面-Python GUI 编程(Tkinter)
- Better-scroll的安装及使用
- vb.net中的换行
- 【逆向】Android逆向破解某APP
- PB12下geturl获取汉字乱码的解决
- js原生 在线客服功能
- 【c++11并不遥远】使xcode工程支持c++11特性
- Python网络爬虫:下载漫画的正确姿势
- 用Python爬取QQ音乐评论并制成词云图
- Jmeter把响应数据结果保存到本地文件
- 听音室-HIFI入门之400多张发烧碟中选出的精品