this在java中的用法

1.使用this关键字引用成员变量

作用:解决成员变量与参数或局部变量命名冲突的问题

public class Dog {
String name;
public Dog(String name) {
this.name = name;
}
}

2.使用this关键字引用成员函数。在方法中引用调用该方法的对象

作用:让类中一个方法,访问该类的另一个方法或实例变量

class Dog {
public void jump() {
System.out.println("正在执行jump方法");
}
public void run() {
Dog d = new Dog();
d.jump();
System.out.println("正在执行run方法");
}
} public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.run();
}
}

Dog类中run方法调用jump方法一定要通过对象调用,因为jump方法并没有被static修饰。但不必在run()方法中重新定义一个Dog类,因为DogTest类中当程序调用run()方法时,一定会提供一个Dog对象,这样就可以直接使用这个已经存在的Dog对象,而无须创建新的Dog对象。

因此通过this关键字就可以在run()方法中调用该方法的对象

public void run(){
this.jump();//Java允许省略this前缀,即可直接写成jump();
System.out.println("正在执行run方法");
}

static修饰的方法中不能使用this引用

例如:

public class DogTest {
public void dog() {
System.out.println("汪汪汪");
}
public static void main(String[] args){
this.dog(); //报错:Cannot use this in a static context。
//省略掉this的情况下:同样报错,因为在静态方法中,不能直接访问非静态成员(包括方法和变量)。非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。
//解决办法:法1.将dog()同样设置为静态 法2.先实例化对象,然后使用对象来调用函数
}
}

3.使用this关键字在自身构造方法内部引用其它构造方法

在某个构造方法内使用this(参数列表),即可跳转到其他构造方法

4.用this关键字代表自身类的对象

return this 即代表return整个自身类

this在java中的用法的更多相关文章

  1. JAVA中ArrayList用法

    JAVA中ArrayList用法 2011-07-20 15:02:03|  分类: 计算机专业 |  标签:java  arraylist用法  |举报|字号 订阅     Java学习过程中做题时 ...

  2. Java中instanceof用法

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  3. 【本地资源路径&&网络资源路径&&正反斜杠在Java中的用法】

    一.概念和用法 左正右反 先来看看转义字符的概念:通过 \ ,?来转变后面字母或符号的含义.意思就是改变字母本身的含义. 以"\"符号为例,JAVA中有很多操作,例如文件操作等,需 ...

  4. pat——1017. Queueing at Bank (java中Map用法)

    由PAT1017例题展开: Suppose a bank has K windows open for service. There is a yellow line in front of the ...

  5. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

  6. Java中finalize()用法

    Java中finalize()   垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),一般的纯Java编写的Class不需要重新覆盖这个方法,因为Obj ...

  7. java中final用法

    1.修饰基础数据成员 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰成常量,不可修改. 2.修饰类或者对象的引用的final 在java中我们无法让对象被修饰为final ...

  8. Java中Iterator用法整理

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...

  9. java中log4j用法详细讲解和一些小总结

    0.Log4j的用法详解 首先,在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对 ...

随机推荐

  1. 【转载】MySQL5.7 添加用户、删除用户与授权

    mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...

  2. 并发研究之CPU缓存一致性协议(MESI)

    CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造 ...

  3. 在macOS下使用MAXPP搭建本地开发服务器简易流程

    本文适用于解决前端开发时所需的服务器支持,包括文件上传和下载.在开发环境中需要保持尽量的开放,并不是安全的.根据浏览器安全协议,所下载的开源项目是不能直接在file中直接打开的,需要把文件放置在服务器 ...

  4. 用webpack4从零开始构建react脚手架

    用webpack4从零开始构建react脚手架 使用脚手架 git clone git@github.com:xiehaitao0229/react-wepack4-xht.git` `cd reac ...

  5. rpm 安装、卸载软件命令 ——以nginx为例

    1.安装 命令:rpm    -ivh    nginx-1.14.0-1.el7_4.ngx.x86_64.rpm 2.查看安装结果 命令:rpm   -qa  | grep  nginx 3.升级 ...

  6. 配置ubuntu的超管账号密码

    1 在搭建ubuntu 之后 只有自己的账号 2 root 用户是没有配置好的 需要重新配置 3 passwd root 4 输入新密码即可

  7. 在DOM加载之前insertScript

    起因 由于工作原因需要联调碧桂园的SDK 大概是以下代码,起初我是放在head中的,因为最初这样调试,包括线上环境都是OK的,可以获取到SDK的内容,换句话说js节点是可以插入到root内的,自从换了 ...

  8. npm那些事儿

    npm,Node Package Manager,是node.js的模块依赖管理工具,安装nodejs时,一般会附带npm包管理工具. 一.npm相关1.npm的用途 能解决NodeJS代码部署上的很 ...

  9. Understanding HBase and BigTable

    Hbase is a distributed data storage systems. A Bigtable is spare , distributed , persistent multidim ...

  10. Git服务器安装详解及安装遇到问题解决方案

    git是一个不错的版本管理的工具.现在自己在搞一个简单的应用程序开发,想使用git来进行管理.在Google了配置文档后,还是受了N多的挫折.某些文档质量不高,浪费了好多时间...... 好,切入正题 ...