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

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. 使用 MVVMLight 绑定数据

    如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight 这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以 ...

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

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

  3. Dubbo(三) -- 多协议支持与多注册中心

    一.Dubbo支持的协议 Dubbo协议.Hessian协议.HTTP协议.RMI协议.WebService协议.Thrift协议.Memcached协议.Redis协议 二.协议简介 详细参考:ht ...

  4. WebSphere和IHS的安装

    环境:CentOS6.5, IP :192.168.0.91 hostname: IHS 1.下载Installation Manage安装包 URL:http://www.ibm.com/devel ...

  5. 【WebService】Stax的基本操作基于游标

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <book ...

  6. EUI组件之Button

    一.Button的常规使用 用到的按钮素材,分别为按钮的正常.按下.禁用图片 拖动一个Button到exml,并设置正常.按下.禁用.标签等属性 点击效果 其他: 1. 按钮的标签字体颜色大小怎么改变 ...

  7. Python - 3.6 学习四

    错误.调试和测试 程序运行中,可能会遇到BUG.用户输入异常数据以及其它环境的异常,这些都需要程序猿进行处理.Python提供了一套内置的异常处理机制,供程序猿使用,同时PDB提供了调试代码的功能,除 ...

  8. 删除Linux的用户

    vipw : root@ www.linuxidc.com :/home# vipw 找到你之前创建的用户,用dd删除那行(记得保存:wq or :x)..之后. root@ www.linuxidc ...

  9. SaltStack实现Haproxy Nginx+php MySQL主从

    构建图如下 参考文档:https://github.com/unixhot/saltbook-code/tree/master

  10. freemarker 判断写法

    1.if条件写法:如果data非空则输出:test<#if data?? >test</#if> 2.为空则输出 <#if !(data??) > test < ...