java 中的this 关键字的用法
来源:互联网 发布:路径动画导入unity3d 编辑:程序博客网 时间:2024/04/28 11:54
this是指向本身的隐含的指针,简单的说,哪个对象调用this所在的方法,那么this就是哪个对象。
示例代码: TestThis_1.java
/* 问题:什么是this
* 输出结果:
* A@4e44ac6a
*/
public class TestThis_1 {
public static void main(String[] args) {
A aa = new A();
System.out.println(aa.f()); //aa.f(), 返回aa这个对象的引用(指针)
}
}
class A {
public A f() {
return this; //返回调用f()方法的对象的A类对象的引用
}
}
this的常见用法
1. 区分同名变量
示例代码: TestThis_2.java
/* this的常见用法1:区分同名变量
* 输出结果:
* this. i = 1
* i = 33
*/
public class TestThis_2 {
public static void main(String[] args) {
A aa = new A(33);
}
}
class A {
public int i = 1; //这个i是成员变量
/*注意:一般不这么写,构造函数主要是为了初始化,这么写主要是为了便于理解*/
public A(int i) { //这个i是局部变量
System.out.printf("this. i = %d\n", this.i); //this.i指的是对象本身的成员变量i
System.out.printf("i = %d\n", i); //这里的i是局部变量i
}
}
2. 构造方法间的相互调用
示例代码: TestThis_3.java
/* this的常见用法2: 构造方法中互相调用*/
public class TestThis_3 {
public static void main(String[] args) {
}
}
class A {
int i, j, k;
public A(int i) {
this.i = i;
}
public A(int i, int j) {
/* i = 3; error 如果不注释掉就会报错:用this(...)调用构造方法的时候,只能把它放在第一句
* TestThis_3.java:20: error: call to this must be first statement in constructor
* this(i);
* ^
* 1 error
*/
this(i);
this.j = j;
}
public A(int i, int j, int k) {
this(i, j);
this.k = k;
}
}
注意事项
被static修饰的方法没有this指针。因为被static修饰的方法是公共的,不能说属于哪个具体的对象的。
示例代码: TestThis_4.java
/*static方法内部没有this指针*/
public class TestThis_4 {
public static void main(String[] args) {
}
}
class A {
static A f() {
return this;
/* 出错信息:TestThis_4.java:10: error: non-static variable this cannot be referenced from a static context
* return this;
* ^
* 1 error
*/
}
}
- java 中的this 关键字的用法
- java中的this关键字与final关键字的用法总结
- java this关键字的用法
- Java this关键字的用法
- java关键字this的用法
- java 中的this关键字的几种用法
- Java中的关键字Super和This的用法
- javascript,jquery中的this关键字的用法
- javascript 中的this关键字的用法
- Java this 关键字用法
- Java this 关键字用法
- Java this 关键字用法
- java this关键字的几种用法
- Java关键字this的用法总结
- 【JAVA】this和super关键字的用法
- Java中this关键字的用法
- Java中this关键字的用法
- java中this关键字的用法
- 有向图数据写入邻接表 并Dijkstra算法求最短路径
- 华为笔试题
- Spring 注解学习手札(二) 控制层梳理
- Hadoop如何计算map数和reduce数
- GCD详细介绍
- java 中的this 关键字的用法
- 美国付费电视行业2015年财报大集合
- 多个Activity轮训切换的实现
- ExtJs布局详解
- Postgre: Some useful command of Postgre
- 动态规划初步总结(1)(51Nod,CODE[VS]为例题)
- Gartner:以下5种情况公司应该选择私有云而不是公有云
- 关于修改工具栏查询功能
- Kotlin学习笔记——属性和字段