`
liuwei1981
  • 浏览: 771828 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161194
社区版块
存档分类
最新评论

64.this关键字

 
阅读更多

1 使用this来区分当前对象

 

 Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象:

 

构造器中指该构造器所创建的新对象;
方法中指调用该方法的对象;
在类本身的方法或构造器中引用该类的实例变量和方法。


this只能用在构造器或者方法中,用于获得调用当前的构造器、方法的对象引用。可以和任何的对象引用一样来对处理这个this对象。


下面我们以一个案例来演示一下如何在一个类的方法中调用同一个类的另一个方法:

 

public class Person {
 private String name;

 private int age;

 private String sex;

 public String showName() {
  return this.name;
 }

 public void setName(String theName) {
  this.name = theName;
 }
 // ... ...
}


在这个类“Person”中,定义了两个方法用于存取name属性。我们来看一下showName()这个方法,它将返回当前对象的name属性的值,在这里就使用了this来表示当前的对象的属性,在方法setName()中也有类似的用法。

 

其实,如果你只是在类的某个方法或构造器中调用另一个方法,可以不用显式使用this。

 

这样的写法虽然并非必要,但这种写法可以使得你的程序清晰易读,特别是在你的方法中的参数名称和属性名称一样的时候,例如,如果方法setName()中的参数名称也是为name,那么,如果没有用this来标示对象的属性,方法中的代码将如下所示:
… …
public void setName(String name){
 name = name;
}
… …


那么,这里面的两个“name”就不是很好区别了。


还有一种情况是必需使用this关键字的,那就是当你需要在对象中明确的指明当前的对象引用是本对象的时候。比如,当你需要返回当前的对象的时候,就需要用到this关键字了。

 

public class Account {
 private int accountId = 100000;

 public Account createAccount() {
  accountId++;
  return this;
 }

 public int getAccountId() {
  return accountId;
 }

 public static void main(String[] args) {
  Account account = new Account();
  System.out.println("账号是:"
    + account.createAccount().createAccount().getAccountId());
 }
}


由于createAccount()方法返回了同一个对象,所以可以在这个对象上多次调用方法createAccount()。


编译并运行上面的程序,将得到如下的输出:
账号是:100002


2 在构造器中使用this来调用对象本身的其他构造器

 

当我们给一个重载构造器的时候,可能在一个构造器中的一段代码和另一个构造器完全一样,那么,就可以在这个构造器中直接调用另一个构造器,这样可以避免编写相同的代码。

 

在构造器中使用下面的方式可以调用对象本身的其他的构造器,语法如下:
this([args_list]);


直接用this()加上类构造器所需要的参数,就可以调用类本身的其他构造器了。

 

如果类中有多个其他构造器定义,系统将自动根据this()中的参数个数和参数类型来找出类中相匹配的构造器。
我们来看一个在构造器中使用this()的例子:

public class Person {
 private String name;

 private int age;

 private String sex;

 public Person() {
  System.out.println("构造器Person()被调用");
  sex = "Male";
  System.out.println("name=" + name + " ,age=" + age + " ,sex=" + sex);
 }

 public Person(String theName) {
  // 调用构造器Person()
  this();
  System.out.println("构造器Person(String theName)被调用");
  name = theName;
  System.out.println("name=" + name + " ,age=" + age + " ,sex=" + sex);
 }

 public Person(String theName, int theAge) {
  // 调用构造器Person(String theName)
  this(theName);
  System.out.println("构造器Person(String theName,int theAge)被调用");
  age = theAge;
  System.out.println("name=" + name + " ,age=" + age + " ,sex=" + sex);
 }

 // … …
}


在这个示例中,我们定义了一个类“Person”,这个类中定义了三个构造器:没有参数的构造器、有一个参数的构造器以及有两个参数的构造器。没有参数的构造器将以“Male”值来初始化新建对象的sex属性。

 

下面我们重点来看后面两个构造器,在带一个参数的构造器中,接收一个String类型的参数theName(姓名)来创建对象,这个构造器代码块里面有一条语句:
this();


这条语句的作用是用于调用改对象的没有参数的构造器,也就是Person();而在带两个参数的构造器中,接收theName(姓名)和theAge(年龄)来创建对象,它也通过this()来调用了该对象中的另外一个构造器:
this(theName);


此时,这条语句调用的是带一个String类型参数的构造器,在这里是Person(String theName)这个构造器。


注意:
  在构造器中可以通过this()方式来调用其他的构造器,但在一个构造器中最多只能调用一次其他的构造器。并且,对其他构造器的调用动作必须在构造器的起始处,否则编译的时候将会出现错误。


  另外,不能在构造器以外的地方以这种方式调用构造器。

分享到:
评论

相关推荐

    23.this关键字.zip

    23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字...

    【IT十八掌徐培成】Java基础第02天-01.java关键字.zip

    3. 类与对象关键字:`public`, `private`, `protected`, `static`, `final`, `abstract`, `void`, `this`, `super`, `new`, `instanceof`。它们用于定义类的访问权限、修饰成员变量和方法、创建对象、进行类型检查等...

    浅析Java ClassName.this中类名.this关键字的理解

    Java中的`ClassName.this`是一个非常重要的关键字组合,它在编程中起到了关键的作用,尤其是在处理类的内部结构和对象引用时。下面将详细解释`this`关键字的用途以及`ClassName.this`的含义。 首先,让我们来看看`...

    asp.net this关键字.txt

    ### ASP.NET中的this关键字 在ASP.NET开发过程中,`this`关键字是一个非常重要的概念,它在类的方法或构造函数中有着特殊的意义与用途。本文将详细介绍`this`关键字的用法及其背后的原理。 #### `this`关键字概述 ...

    第04章 面向对象(上) 07 This关键字

    1. this关键字的含义: "this"关键字在Java中代表当前对象的引用。在方法或构造器内部,当需要区分局部变量与成员变量,或者明确表示当前对象时,"this"就显得非常有用。它始终指向调用该方法或构造器的对象实例。 ...

    this关键字共2页.pdf.zip

    【标题】: "this关键字共2页.pdf.zip" 指的是一份关于Java编程语言中的关键字"this"的文档,可能包含两页详细讲解。这个压缩文件很可能提供了"this"关键字的基础概念、用法以及在实际编程中的应用示例。 【描述】: ...

    Java中this关键字使用小结

    在 Java 编程语言中,`this` 关键字是一个非常重要的概念,它用来引用当前对象的实例。本文将深入探讨 `this` 关键字的三种主要用途,并通过实例代码来解析其工作原理。 首先,`this` 关键字的基本含义是引用当前...

    this关键字

    this关键字demo,简单的对this这个关键字做了一个小的代码,便于初学者直接的对this关键字有一个了解而已,技术太烂希望勿喷

    java中带有this关键字的程序内存分析

    在Java编程语言中,`this`关键字是一个非常重要的概念,它在程序的内存管理中扮演着关键角色。本文将深入探讨`this`关键字在Java程序中的应用,以及它如何与内存分配相关联。 首先,`this`关键字在Java中主要表示...

    JavaScript中this关键字使用方法详解

    在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...

    this关键字的用法.pdf

    1. **this关键字的含义** `this`关键字在Delphi中代表了正在执行方法的那个对象实例。当在一个类的方法内,我们需要引用到当前对象的属性或方法时,`this`就起到了指针的作用,指向调用该方法的对象实例。通过`this...

    MLDN魔乐JAVA_09深入引用、this关键字、对象比较.rar

    本课程“MLDN魔乐JAVA_09深入引用、this关键字、对象比较”将带你深入探讨这些核心概念。 首先,让我们来讨论“引用”。在Java中,变量可以分为基本类型和引用类型。引用类型变量实际上存储的是对象在内存中的地址...

    Java零基础-this关键字.md

    ### Java零基础-this关键字 #### 内容概要 本文主要介绍了Java编程语言中的`this`关键字及其在不同场景下的应用。通过本文的学习,初学者能够深入理解`this`关键字的作用,掌握其在实例方法、构造方法及内部类中的...

    深入理解JavaScript中的this关键字

    JavaScript中的`this`关键字是编程过程中经常会遇到的一个关键概念,尤其在面向对象编程中起着至关重要的作用。`this`的值取决于它被调用时的上下文,而不是定义时的位置,这使得它有时会显得有些复杂。在这个深入...

    java this关键字的使用

    在Java编程语言中,`this`关键字是一个非常重要的概念,它代表了当前对象的引用。初学者在学习Java时,理解和掌握`this`关键字的使用是至关重要的,因为它可以帮助我们更好地编写和理解类与对象之间的关系。下面我们...

    this关键字的总结.doc

    ### Java中的this关键字详解 #### 一、概述 在Java编程语言中,`this`关键字是一种非常实用且灵活的关键字,它主要用于指代当前对象。`this`可以在类的内部被使用,帮助开发者清晰地表达代码逻辑,尤其是在解决...

    类与对象.docx

    4. 如果局部变量和成员变量名字相同,要在方法内部使用成员变量,需要使用 `this` 关键字来区分。 5. 使用 `super` 关键字可以调用同类的其他构造方法,这有助于代码复用,减少维护工作。 6. 使用 `static` 关键字...

    java基础补足和thinking In Java学习.rar

    JAVA学习日记---Thinking in Java学习笔记 第5章总结 第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名...2. this关键字在同一个类中可以调用构造函数,如:this()表示调用此类无参的构造函数

    【Java编程教程】详解Java this 关键字.pdf

    // 使用this关键字区分实例变量和构造函数参数 this.rollno = rollno; this.name = name; this.fee = fee; } void display() { System.out.println(rollno + " " + name + " " + fee); } } ``` 2. 调用...

    java中的this关键字

    在Java编程语言中,`this`关键字是一个非常关键的概念,它代表了当前对象的引用。在不同的上下文中,`this`有不同的用法和含义,但始终指向调用该代码的对象。接下来,我们将深入探讨`this`关键字在Java中的应用。 ...

Global site tag (gtag.js) - Google Analytics