this关键字主要有三个作用

1.调用本类中的属性。

 public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
} class Person{
String name;
int age;
public Person(String n, int a){
name = n;
age = a;
}
public String getInfo(){
System.out.println();
return null;
}
}

上述程序可以正常运行,但是构造方法中形参名称对于我们来说不便于识别,那我们可不可以这样呢?

 public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
} class Person{
String name;
int age;
public Person(String name, int age){ //将形参名称和类中属性名称一致,这样可以便于我们识别。
name = name; //但是这个程序可以正常运行吗?显然是不能的,这个里的
age = age; //name = name 都是形参变量本身,相当于自己给自己赋值
} //这是不行的。
public String getInfo(){
System.out.println();
return null;
}
}

这时我们就以用this关键字来实现在构造方法中调用类的属性。

 public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
} class Person{
String name;
int age;
public Person(String name, int age){
this.name = name; //name起来么加了this就代表这个属性是类中的属性,后面的name是形参。
this.age = age; //这样就没有问题了
}
public String getInfo(){
System.out.println();
return null;
}
}

2.调用构造方法。

例如

 public class TextThis {
public static void main(String[] args){
Person p1 = new Person("hcf", 21);
p1.getInfo();
}
} class Person{
String name;
int age;
public Person(){
System.out.println("调用了无参的构造方法Person()"); //无参的构造方法被调用就会打印出此语句。
}
public Person(String name, int age){
this(); //通过this()调用无参的构造方法。
this.name = name; //此代码运行完我们会发现,打印出了“调用了无参的构造方法...”
this.age = age; /说明我们实现了通过this()调用了构造方法。
}
public String getInfo(){
System.out.println(name +"\n" + age);
return null;
}
}

3.代表当前对象

 public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1); //打印p1的地址
p1.getInfo(); //调用p1中的getInfo()方法,打印当前this的地址
System.out.println(p2); //打印p2的地址
p2.getInfo(); //调用p2中的getInfo()方法,打印当前this的地址。 }
} class Person{
public String getInfo(){
System.out.println(this); //this代表当前对象,例如调用p1.getInfo()方法,此时打印的this就是p1
return null; //同理,调用p2.getInfo()方法,打印的this就是p2.
} //所以该代码运行后,p1和p1.getInfo();输出的结果是相同的,
} //p2和P2.getInfo()方法输出的结果也是相同的。

1.5(java学习笔记)this关键字的更多相关文章

  1. Java学习笔记18---final关键字修饰变量、方法及类

    英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...

  2. Java学习笔记——static关键字与静态的使用方法

    static:可以修饰成员变量和成员方法. 当变量被static修饰后,则其可以直接被类名调用.类名.成员. static特点: 随着类的加载而加载: 优先于对象存在: 被所有的对象共享,节省空间,但 ...

  3. java学习笔记11-static关键字

    如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...

  4. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  5. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  6. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  7. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  8. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  10. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

随机推荐

  1. python监控服务器

    import paramikoimport threadingimport reimport timeimport stringfrom sendmail import send_maildef ss ...

  2. linux查看操作系统是多少位

    有三种方法: 1.echo $HOSTTYPE 2.getconf LONG_BIT,此处不应该是getconf WORD_BIT命令,在64位系统中显示的是32 3.uname -a 出现" ...

  3. Spring - IoC(3): Bean 实例的创建方式

    创建一个 Bean 实例对象的方法通常有如下方式: 调用构造器创建 Bean 实例 调用静态工厂方法创建 Bean 实例 调用实例工厂方法创建 Bean 实例 使用构造器创建 Bean 实例 XML ...

  4. centos 防火墙关闭/开启

    从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc/init.d/iptables stop ...

  5. 不谈OI:高二(13)最后一次班班有歌声

    最后一次班班有歌声了…… 自己因为搞oi并没有参加,只是决赛的时候幕后放了放背景视频…… 不管怎么说,我们班唱的很棒啊,全部人都很棒! 说真的我为我们班骄傲 视频: https://v.qq.com/ ...

  6. Bzoj1917 [Ctsc2010]星际旅行

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 185  Solved: 118 Description 公元3000年,地球联盟已经攻占了银河系内的N ...

  7. codefoeces 671 problem D

    D. Roads in Yusland standard output Mayor of Yusland just won the lottery and decided to spent money ...

  8. autoKeras入门

    测试本地mnist数据集 图片只用500张,450张做train与50张test, 代码如下: # conding:utf-8 import os os.environ[' import numpy ...

  9. (十二)进一步掌握STVD/COSMIC

    如何分配变量到指定的地址 举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsigned char temp_B@0x100; //定 ...

  10. 智联招聘的python岗位数据词云制作

    # 根据传入的背景图片路径和词频字典.字体文件,生成指定名称的词云图片 def generate_word_cloud(img_bg_path, top_words_with_freq, font_p ...