未经允许,禁止转载!!!!!!!!

this关键词在java里面很重要,想了解清楚this就必须对  类;对象;this;成员变量;方法;构造方法 都了解清楚。

一、使用this调用本类中的成员变量(属性)或成员方法

class Student {
private String name; //定义一个成员变量name public void setName(String name) { //设置姓名,定义一个形参name
name=name; //将局部变量的值传递给成员变量
}
public String getName( ) { //获得姓名
return "姓名:"+name;
}
} public class ThisExample01{
public static void main(String args[]) {
Student stu=new Student();
stu.setName("李明");
System.out.println(stu.getName());
}
}

运行结果:姓名:null

由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。

另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作 
为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?

此时this这个关键字就起到作用了,这种情 况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作,

将student类的代码改进如下:this.成员变量 = 该方法传的参数

class Student {
private String name; public void setName(String name) {
this.name=name;
}
public String getName( ) {
return "姓名:"+name;
}
}

既然this能够调用本类中的成员变量,那么,this也可以调用本类中的成员方法。以例2为例,程序代码如下:

class Student{
private String name; public void setName(String name){
this.print(); //调用本类中的print方法
//this.name = name; 由于此处把this.name = name注释了,所以向setName传递的名字参数没有被成员变量接收到,所以最后名字是null
} public String getName( ) {
return "姓名:"+name;
} public void print( ) {
System.out.println("设置相关信息如下……");
}
} public class ThisExample02{ public static void main(String args[]) {
Student stu=new Student();
stu.setName("李明");
System.out.println(stu.getName());
}
}

最后输出结果是:

设置相关信息如下……
姓名:null

如果将this.name = name写进去的话,最后输出结果是:

设置相关信息如下……
姓名:李明

一般情况下,在Java语言中引用成员变量或者成员方法都是以对象名.成员变量或者对象名.成员方法的形式。

不过有些程序员即使在没有相同变量的时候,也喜欢使用this.成员变量的形式来引用变量 。这主要是从便于代码的阅读考虑。

一看到这个 this关键字就知道现在引用的变量是成员变量或者成员方法,而不是局部变量。这无形中就提高了代码的阅读性

二、使用this调用构造方法

在一个Java类中,构造方法是一个与类同名的方法,必须与类的名字相同。而且在Java类中必须存在一个构造方法。

如果在代码中没有显示的体现构造方法的话,那么编译器在编译的时候会自动添加 一个没有形式参数的构造方法。

在一个类中可以存在多个构造方法,这些构造方法都采用相同的名字,只是形式参数不同。Java语言就凭用户的参数来判断调用哪一个构造方法。

当一个类中有多个构 造方法时,可以利用this关键字相互调用。

Java编译器会根据所传递的参数数量的不同,来判断该调用哪个构造方法。

所以,我们在实际编程的时候有时候需要在一个构造方法中对另一个构造方法进行调用。但是,在使用this关键字调用其他构造方法的时候,this()调用构造方法只能放在构造方法的首行

为的是能够为类中的属性初始化;而且至少有一个构造方法是不用this调用,否则程序会出现错误。

注意的是,使用this调用构造方法只适用于构造方法的调用,类中的其他方法不能使用这种方法。

三、使用this引用当前对象

this最重要的特定就是表示当前对象,那什么叫当前对象呢?在Java中当前对象就是指当前正在调用类中方法的对象。

使用this引用当前对象是指如果在类的方法中需要返回一个对象,并且该对象是 方法所在的类的当前对象,可以使用this关键字作为方法的返回值。

package practise;

public class Student {
public String getInfo(){
System.out.println("Student类-------->" + this);
return null;
}
}
package practise;

public class ThisExample06{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
System.out.println("MAIN方法---------->" + stu1);
stu1.getInfo();
}
}

输出结果是:

MAIN方法---------->practise.Student@15db9742
Student类---------->practise.Student@15db9742

下面再看一个例子

package practise;

public class Students {
private int age;
private String name; public String getInfo(){
System.out.println("Students类-------->" + this);
return null;
}
public Students(){
System.out.println("新对象实例化");
}
public Students(String name,int age){
System.out.println("新对象实例化");
this.age = age;
}
}
package practise;

public class ThisExample03 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Students stu1 = new Students("李明",20);
System.out.println(stu1.getInfo());
}
}

最后输出结果:

新对象实例化
Students类-------->practise.Students@15db9742
null

下面是this和super调用构造器的方法

java基础语法this关键字的更多相关文章

  1. Java基础语法(1)-关键字与保留字

    title: Java基础语法(1)-关键字与保留字 blog: CSDN data: Java学习路线及视频 1.关键字 关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用 ...

  2. Java基础语法(一)---关键字、常量、变量、运算符

    一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型:byte  short  int  long   浮点类型:f ...

  3. java——基础语法

    java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...

  4. Java基础语法(2)-变量

    title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...

  5. JAVA基础语法——标识符、修饰符、关键字(个人整理总结)

    JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1    什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...

  6. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  7. 2、Java 基础语法标识符、修饰符、变量、 数组、枚举、关键字

    Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  8. 008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字

    008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字 关键字 关键字就是一些有特殊意义的词 之前学习的程序中涉及到的关键字 Java中 ...

  9. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

随机推荐

  1. [转]ASP.NET MVC 5 - 给数据模型添加校验器

    在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY  ...

  2. C#------各种数据库连接字符串编写

    转载: https://www.connectionstrings.com/

  3. php 实现 java com.sun.org.apache.xml.internal.security.utils.Base64 Byte数组加密

    <?php function java_base64_encode($arr){ $str = ''; foreach ($arr as $key => $value) { $str .= ...

  4. docker学习-docker解决了什么问题

    docker标准化让快速扩张.弹性伸缩变得简答.

  5. 说说SPI协议

    SPI,是英语Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管 ...

  6. C 标准库 - <stdio.h>

    一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件. #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体 ...

  7. C++的virtual详解

    类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BA ...

  8. 使用Jquery做分页效果

    之前写过一个PHP 的分页效果,但是今天小伙伴和我说了一个不适用后台单纯用前段的JS来写分页,整理了一下,代码如下: html: <div id="containet"> ...

  9. LNMP 配置二级域名

    准备: 已备案的主域名,例如:www.test.com 拥有自己的服务器 服务器环境 LNMP 目标: 配置一个二级域名: bbs.test.com 1 登录域名后台(阿里为例) 记录类型: A 主机 ...

  10. MQTT的学习研究(十五) MQTT 和android整合文章

    详细参考:  How to Implement Push Notifications for Android http://tokudu.com/2010/how-to-implement-push- ...