JAVA学习第九课(关键字一this)
来源:互联网 发布:淘宝达人管理中心在 编辑:程序博客网 时间:2024/04/30 03:16
关键字:
this 关键字
this 使用一:
this代表(构造函数)Man所属的对象jo。哪个对象调用了this所在的函数,那么this就代表那个对象。
PS:只有对象才能调用构造函数
所以,正规且阅读性强的代码
以内存分配图解释this
下述代码,this如果放下面
this的应用
this 关键字
this 使用一:
直接以代码解释:
class Man{private int age;private String name;Man(){name= null;age = 0;}Man(String n)//正常直接打印"BLF,0",但是把n改为name呢,就会打印null,0{name = n; }//改成name虽然增加了阅读性,但是参数名进栈时,栈区已经有了一个局部变量名name, 那么name的赋值,只会把自己赋值给自己。如同int x = 5; x = x; /*Man(String name){this.name = name;//this关键字的作用就是说,这个对象的name,那么会进堆内存,就不会起冲突了} */Man(int a){ age = a; }Man(int a,String n){age = a;name = n;}void run(){System.out.println(name+","+age);//实际上这里省略了this.name+","+this.age}}public class Main {public static void main (String[] args) {Man jo = new Man("BLF");jo.run();}}所以:当局部变量和成员变量重名时,可以用关键字this来区分,this就代表当前对象(this就是所在函数所属对象的引用):
this代表(构造函数)Man所属的对象jo。哪个对象调用了this所在的函数,那么this就代表那个对象。
PS:只有对象才能调用构造函数
所以,正规且阅读性强的代码
class Man{private int age;private String name;Man(){name= null;age = 0;}Man(String name){this.name = name; }Man(int age){ this.age = age; }Man(int age,String name){this.age = age;this.name = name;}void run(){System.out.println(this.name+","+this.age);}}public class Main {public static void main (String[] args) {Man jo = new Man("BLF");jo.run();}}
以内存分配图解释this
this 使用二:
this可以在构造函数里调用其他构造函数
错误演示:
class Man{private int age;private String name;Man(){name= null;age = 0;}Man(String name){this.name = name; }Man(int age){this.age = age; }Man(int age,String name){//上面已经写过了,是不是就可以进行调用了呢?答案是否定的this.Man(name);//this代表了对象,对象要想进行是使用必须先初始化,但是this.Man(age);//这里还没有进行初始化,就开始使用,所以是错误的}void run(){System.out.println(this.name+","+this.age);}}public class Main {public static void main (String[] args) {Man jo = new Man(12,"BLF");//此处传2个参数jo.run();}}修改
class Man{private int age;private String name;Man(){name= null;age = 0;}Man(String name){this.name = name; }Man(int age){this.age = age; }Man(int age,String name){this(name);//调用上述构造函数,注意:必须放第一行,房子this.age = age;下面就错,理由见下this.age = age;}void run(){System.out.println(this.name+","+this.age);}}public class Main {public static void main (String[] args) {Man jo = new Man(12,"BLF");jo.run();}}注意:this 规则:this只能定义在构造函数的第一行,因为初始化必须先执行
下述代码,this如果放下面
Man(int age,String name){this.name = name;//初始化BLFthis.age = age;//初始化12this("gggg"); //改变BLF,变为gggg,故错误}PS:this() 不要滥调用.
this的应用
import java.security.cert.TrustAnchor;class Man{private int age;private String name;Man(){name= null;age = 0;}Man(String name){this.name = name; }Man(int age){this.age = age; }Man(int age,String name){this(name);//调用上述构造函数,注意:见下this.age = age;}public void run(){System.out.println(this.name+","+this.age);}/*判断两个人是否是同龄人*/public boolean judge(Man g){return this.age == g.age;//这里的this代表jo2}}public class Main {public static void main (String[] args) {Man jo = new Man(12,"BLF");Man jo2 = new Man(12,"BLF2");boolean flag = jo2.judge(jo);if(flag==true)System.out.println("YES");else System.out.println("NO");}}
1 0
- JAVA学习第九课(关键字一this)
- java学习笔记<一>this关键字
- JAVA学习第九课(关键字二static)
- Java关键字(一)this与super关键字
- Java 学习历程(三)this关键字和static关键字
- JAVA学习七:this关键字
- java学习之this关键字
- java学习 十三、关键字this
- Java学习5:this关键字
- java学习笔记-this关键字
- javaScript this关键字(一)
- Java复习(一)-关键字this,super的用法
- java中的关键字一(this,super,static)
- Java学习之关键字this的学习
- Java基础学习总结(9)——this关键字
- Java学习历程(6):this关键字理解
- java学习笔记(十一)封装、this关键字与static
- Java基础学习笔记:(七)this关键字
- winqq国际版
- C# 汉字中文大写货币转换函数类(根据其他人的VBA函数改编)
- Storm on yarn安装步骤
- 全手工快速开发osgi应用的方法
- 麻省理工时域差分软件 MEEP windows 下编译开发(一)——准备工作
- JAVA学习第九课(关键字一this)
- 专治肩膀酸痛怎么办QQ846460508
- 专治肩膀酸痛手指发麻QQ846460508
- LV路易威登欧洲代购女士单肩包黑白彩QQ846460508
- 专治肩膀酸痛怎么按摩QQ846460508
- LVNOE小号老花水桶包QQ846460508
- 号召全国广大教师做党和人民满意的好老师
- Ajax xmlhttprequest原理(一)
- 加思考的挂号费驾驶的股份