JAVA_SE基础——31.this关键字
学习笔记体会。
this的通俗解释:
有一个A类,一个B方法,一个C变量,其中B和C都在类A中
this.B()就是调用A类中的B方法
this.C=1(假设C是一个int变量)就是给类A的C变量赋了1这个值
简单的说就是调用本类的方法或者变量(都是成员的)
需求: 使用java类描述一个动物。
class Animal{
String name = "狗"; //成员变量
//this关键字代表了所属函数的调用者对象
public void eat(){
//System.out.println("this:"+ this);
String name = "老鼠"; //局部变量
System.out.println(name+"在吃..."); //需求: 就要目前的name是成员变量的name.
}
}
class Demo6
{
public static void main(String[] args)
{
Animal a = new Animal(); //现在在内存中存在两份name数据。
a.eat();
}
}
运行结果是:
老鼠在吃...
为何是老鼠在吃呢 而不是狗在吃
因为存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是就近原则的机制访问的。)。
那么问题就来了???
需要解决这种同类同变量名时怎么区分并且调用?
用this关键字来解决就可以了。
先给大家看看内存图估计就懂了
下面看我用this关键字来解决上面的问题。
class Animal{
String name ; //成员变量
public Animal(String name){
this.name = name;
}
//this关键字代表了所属函数的调用者对象
public void eat(){
//System.out.println("this:"+ this);
String name = "老鼠"; //局部变量
System.out.println(this.name+"在吃..."); //需求: 就要目前的name是成员变量的name.
System.out.println(this);
}
}
class Demo6
{
public static void main(String[] args)
{
Animal dog = new Animal("狗"); //现在在内存中存在两份name数据。
Animal cat = new Animal("猫");
dog.eat();
cat.eat();
}
}
运行结果:
狗在吃...
Animal@15db9742
猫在吃...
Animal@6d06d69c
上面有两句内存地址 就说明了第一次调用了函数和第二次调用了函数的对象是不同的(第一次是dog,第二次是cat),这就区分了 两个对象分别调用变量而不混淆的好处了。。
如果这样都不理解的话,可以这样认为this关键字代表了所属函数的调用者对象。 例如 第一次调用:
(this.name+"在吃...");
可以看成
(dog.name+"在吃...");
dog变量地址是Animal@15db9742 然后就去Animal对象找name的值 以此类推。
(个人观点)this我认为最主要特点是:区分成员变量和局部变量的名称冲突,哪个对象调用了this所在的函数,this就代表哪个对象
this关键字代表了所属函数的调用者对象。
this代表其所在函数所属对象的引用。换言之,this代本类对象的引用。
当成员变量和局部变量重名,可以用关键字this来区分,this就是所在函数所属对象的引用。
简单说,哪个对象调用了this所在的函数,this就代表哪个对象。一般方法调用默认加this。
什么时候使用this关键字呢?
当在函数内需要用到调用该函数的对象时,就用this。
P.S.
通过this在构造函数中调用其他构造函数的时候,只能定义在构造函数的第一行,因为初始化动作要先执行,否则就会报错。
JAVA_SE基础——31.this关键字的更多相关文章
- JAVA_SE基础——6.标识符&关键字
学会写helloworld之后, 我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...
- JAVA_SE基础——41.instanceof关键字(运算符)
instanceof 关键字 instanceof关键字的作用:判断一个对象是否属于指定的类别. instanceof关键字的使用前提:判断的对象与指定的类别必须要存在继承或者实现的关系.关于实现以后 ...
- JAVA_SE基础——40.super关键字
只要this关键字掌握了,super关键字不在话下,因为他们原理都差不多的.. this&super 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针 ...
- JAVA_SE基础——33.this关键字的练习
需求:使用java定义的一个人类,人具备 id ,name ,age 三个属性,还具备一个比较年龄的方法. 要求:必须要写上构造函数,构造函数也必须要使用上this关键字. class Person{ ...
- JAVA_SE基础——32.this关键字调用本类的构造方法
黑马程序员入学blog... 也算是学习笔记. 下面我们来看段代码: package day07; class Student{ int id; //身份证 String name; //名字 pub ...
- Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)
Java语言基础组成-关键字.标识符.注释.常量和变量.运算符 Java语言由8个模块构成,分别为:1.关键字:2.标识符(包名.类名.接口名.常量名.变量名等):3.注释:4.常量和变量:5.运算符 ...
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看 JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...
- JAVA_SE基础——8.基本数据类型
基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...
- JAVA_SE基础——7.常量&变量
上一篇,我讲了标识符&关键字 这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...
随机推荐
- Python可视化库-Matplotlib使用总结
在做完数据分析后,有时候需要将分析结果一目了然地展示出来,此时便离不开Python可视化工具,Matplotlib是Python中的一个2D绘图工具,是另外一个绘图工具seaborn的基础包 先总结下 ...
- 斐波拉契数列(Fibonacci)--用生成器生成数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- javascript ES5、ES6的一些知识
ES6 标签(空格分隔): ES6 严格模式 "use strict" 注意:严格模式也有作用域,如果在某个函数内部声明的话,只在该函数内部有作用 1) 严格模式下全局变量声明必须 ...
- 今年暑假不AC【贪心】
Problem Description "今年暑假不AC?""是的.""那你干什么呢?""看世界杯呀,笨蛋!"" ...
- 解析Visual C# 7.2中的private protected访问修饰符
去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private pro ...
- 如何在IPFS里面上传一张图片
之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...
- VMware 滴滴声解决
去除虚拟机tab时的滴滴声 # cat /etc/inputrc Set bell-style none 重启生效
- PHP自动测试框架Top 10
对于很多PHP开发新手来说,测试自己编写的代码是一个非常棘手的问题.如果出现问题,他们将不知道下一步该怎么做.花费很长的时间调试PHP代码是一个非常不明智的选择,最好的方法就是在编写应用程序代码之前就 ...
- C语言第十次博客作业--结构体
一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...
- [JLOI2012] 树
Description 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深 ...