`
wjb08223
  • 浏览: 3979 次
社区版块
存档分类
最新评论

Java this 关键字的用法

阅读更多
public class ThisTest {
	private int i = 0;

	// 第一个构造器:有一个int型形参

	ThisTest(int i) {

		this.i = i + 1;// 此时this表示引用成员变量i,而非函数参数i

		System.out.println("Int constructor i——this.i:  " + i + "——" + this.i);

		System.out.println("i-1:" + (i - 1) + "this.i+1:" + (this.i + 1));

		// 从两个输出结果充分证明了i和this.i是不一样的!

	}

	// 第二个构造器:有一个String型形参

	ThisTest(String s) {

		System.out.println("String constructor:  " + s);

	}

	// 第三个构造器:有一个int型形参和一个String型形参

	ThisTest(int i, String s) {

		this(s);// this调用第二个构造器

		// this(i);

		this.i = i++;// this以引用该类的成员变量

		System.out.println("Int constructor:  " + i + "\n"
				+ "String constructor:  " + s);

	}

	public ThisTest increment() {

		this.i++;

		return this;// 返回的是当前的对象,该对象属于(ThisTest)

	}

	public static void main(String[] args) {

		ThisTest tt0 = new ThisTest(10);

		ThisTest tt1 = new ThisTest("ok");

		ThisTest tt2 = new ThisTest(20, "ok again!");

		System.out.println(tt0.increment().increment().increment().i);

		// tt0.increment()返回一个在tt0基础上i++的ThisTest对象,

		// 接着又返回在上面返回的对象基础上i++的ThisTest对象!

	}

}

 

 Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。

 

 

 运行结果:

Int constructor i——this.i:  10——11
i-1:9this.i+1:12
String constructor:  ok
String constructor:  ok again!
Int constructor:  21
String constructor:  ok again!
14

 

 

 

 

 

细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:

 

1、表示对当前对象的引用!

 

2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

 

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

 

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

 

 

 

说明在什么情况下需要用到this:
        第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
        第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
        第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。

 

        其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!

 

分享到:
评论

相关推荐

    Java中this关键字使用小结

    总的来说,`this` 关键字是 Java 中用于表示对象实例自身的一个关键字,它帮助我们访问成员变量、区分同名变量、在构造器间传递参数以及实现链式方法调用。理解并熟练运用 `this` 关键字对于编写清晰、高效的 Java ...

    java this关键字的使用

    初学者在学习Java时,理解和掌握`this`关键字的使用是至关重要的,因为它可以帮助我们更好地编写和理解类与对象之间的关系。下面我们将深入探讨`this`关键字的几个主要用法。 1. **成员变量的访问** 当类中的局部...

    Java super关键字使用

    本篇文章将深入探讨`super`关键字的使用方法,包括其在构造函数、方法调用以及字段访问中的应用。 ### 1. 构造函数调用 当子类继承父类时,有时候我们需要在子类的构造函数中调用父类的构造函数。Java中的`super`...

    Java this 关键字的使用方法详解

    Java this 关键字的使用方法详解 Java this 关键字是 Java 语言中一种特殊的引用变量,用于指代当前对象的引用。this 关键字的使用方法可以分为四种:构造方法中的 this、非构造方法中的 this、继承关系下的 this ...

    深入理解java中this关键字的使用

    在Java中,this关键字有多种用法,以下我们将详细介绍this关键字的使用。 一、this关键字用于访问当前对象的成员变量 在Java中,如果我们想要访问当前对象的成员变量,可以使用this关键字,例如: ```java public...

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

    在Java编程语言中,`this`关键字是一个非常重要的概念,它在程序的内存管理中扮演着关键角色。本文将深入探讨`this`关键字在Java程序中的...理解`this`的关键字用法和Java内存模型对于编写高效、无错误的代码至关重要。

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

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

    Java的关键字与保留字

    在深入探讨Java的关键字与保留字之前,我们首先需明确两个概念:关键字和保留字。在编程语言中,关键字是预定义的具有特殊含义的标识符,它们在编译时被解析器识别并执行特定的功能;而保留字则是语言设计者为未来...

    Java基础之关键字_Java基础之关键字_源码

    Java的关键字是被语言本身预定义的标识符,它们不能作为变量名、类名或者方法名。Java的关键字一共51个,包括访问控制修饰符(如public、private、protected)、控制流程关键字(如if、else、for、while)、数据类型...

    java代码-使用java解决用this关键字方法重载的源代码

    java代码-使用java解决用this关键字方法重载的源代码 ——学习参考资料:仅用于个人学习使用!

    java具体关键字和用法

    根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍Java中常用的关键字及其用法,这些知识点对于Java初学者来说非常重要。 ### 1. Abstract `abstract` 是 Java 中的一个关键字,用于声明抽象类或抽象...

    java中的this关键字

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

    Java this用法

    Java this用法 概述:Java 中的 this ...Java this 关键字的用法非常广泛,我们可以使用 this 来访问成员变量、调用构造方法、指代对象自己等等。正确地使用 this 关键字可以使我们的代码更加简洁、易读和易维护。

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

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

    Java零基础-this关键字.md

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

    java关键字总结文档

    在Java中,关键字具有特殊的语法含义,不能用作标识符(例如变量名或方法名)。以下是对给定文件中提到的Java关键字进行的详细解释与总结: #### 1. `abstract` - **用途**:`abstract`关键字用于声明抽象类或抽象...

    Java final关键字

    在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来声明一个变量、方法或类为不可变的。在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量...

    java之this关键字用法实例分析

    当存在需要明确指出当前使用方法的对象是谁的情况时,`this`关键字非常有用。比如,如果一个方法或构造函数中有多个同名的变量(包括字段和参数),`this`可以帮助区分它们。在`increment()`方法中,`this.i += 1;`...

    JAVA this用法

    在 Java 编程语言中,this 关键字是一个非常重要的概念,它有多种用法,但基本上可以归纳为三种:表示当前对象的引用、表示类的成员变量和在构造方法中引用满足指定参数类型的构造器。下面将详细介绍这三种用法。 ...

    Java面向对象(进阶)- this关键字的使用

    本文将深入探讨`this`关键字的使用,特别是在Java面向对象编程的进阶场景中。 首先,我们来明确`this`是什么。`this`关键字在Java中代表当前对象的引用,即调用当前方法或构造器的那个对象。在实例方法或构造器内部...

Global site tag (gtag.js) - Google Analytics