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

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. opencascade读取iges并用vtk离散的一些问题

    近期抽时间在弄iges文件内容读取的工作.然后将其离散化在vtk中能够显示处理以及兴许的一些工作.主要目的是识别CAD文件导出的模型,然后进行离散处理.方便兴许的处理.离散工作比較简单.opencas ...

  2. Windows7安装Mongodb

    1.安装mongodb-win32-x86_64-3.0.4-signed.msi 2.安装kb2731284 安装补丁:Windows6.1-KB2731284-v3-x64.msu 3.创建数据库 ...

  3. python2.0_day21_web聊天室一

    bbs系统项目中我们用到的ajax不多,但是在聊天室里用到的全是ajax,所以本项目的主要内容就是:前端使用ajax传输json格式的数据是本节的重点以及 前端函数的的使用.http协议的特点是:短链 ...

  4. laravel 控制器多个方法共用一个路由

    直接上代码: Route::get('Index/{action}', function(App\Http\Controllers\IndexController $index, $action){ ...

  5. 用代码走进Ftp

    因为最近做一个关于集中采集的ftp改造开发.所以研究了哈ftp的开发. 一个简单常用的连接ftp的命令:ftp 主机ip 下面贴出我自己的ftp的demo. 1.FtpUtil工具类 import j ...

  6. Python 转义字符

    转义字符 说明    \    用在一行的末尾,表示续行符    \r    回车    \n    换行符    \\    打印反斜杠    \'    打印单引号    \"    打 ...

  7. Linux 下配置网卡的别名即网卡子IP的配置

    what 什么是ip别名?用windows的话说,就是为一个网卡配置多个ip.when 什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. ho ...

  8. vsftp服务启动失败

    Linux下的服务如果启动失败,一般是看报错和日志进行排查的 报错看不出什么,那么就看下日志记录了什么/var/log/vsftpd.log: 一般是配置文件有问题 /etc/vsftpd/vsftp ...

  9. PHP常用必备函数

    array_change_key_case — 返回字符串键名全为小写或大写的数组 array_chunk — 将一个数组分割成多个 array_combine — 创建一个数组,用一个数组的值作为其 ...

  10. jQuery实例化的优势,为什么要有实例化,到底实例化后在解决什么问题?

    jQuery实例化对象的方法相比于普通方法 优势: 1.不需要出现大量的new关键字. 2.可实现链式写法. 3.书写更方便 实例化的原因: 1.实例化有利于管理程序中不同的DOM选择和处理(不同的选 ...