Java中this用法.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Java 中 this 用法 在 Java 中,this 是一个关键字,随处可见,用法也多。当全局变量跟局部变量重名时,表示使用全局变量(此时 this 指代本类对象)。下面我们将详细介绍 Java 中 this 的用法。 1. 当全局变量跟局部变量重名时,表示使用全局变量 在 Java 中,当全局变量跟局部变量重名时,this 就是用来区分它们的。例如: ```java class A { String name; void setName(String name) { this.name = name; } } ``` 在上面的例子中,setName 方法中的 name 是局部变量,而 this.name 就是指全局变量 name。 2. 构造方法相互调用 在 Java 中,这个关键字也可以用来实现构造方法的相互调用。例如: ```java class B { String name; B() { this("name"); // 会自动调用带 String 参数的构造方法 } B(String name) { this.name = name; } } ``` 在上面的例子中,B 类的无参构造方法会自动调用带 String 参数的构造方法。 3. this 是指当前对象自己 在 Java 中,这个关键字也可以用来指代当前对象自己。当在一个类中要明确指出使用对象自己的变量或函数时,就应该加上 this 引用。例如: ```java public class Hello { String s = "Hello"; public Hello(String s) { System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s; System.out.println("2 -> this.s = " + this.s); } public static void main(String args[]) { Hello x = new Hello("HelloWorld!"); } } ``` 在上面的例子中,构造函数 Hello 中,参数 s 与类 Hello 的变量 s 同名,这时如果直接对 s 进行操作则是对参数 s 进行操作。若要对类 Hello 的成员变量 s 进行操作就应该用 this 进行引用。 4. 把 this 作为参数传递 在 Java 中,这个关键字也可以用来把自己作为参数传递给别的对象。例如: ```java public class A { public A() { new B(this).print(); } public void print() { System.out.println("Hello from A!"); } } public class B { A a; public B(A a) { this.a = a; } public void print() { a.print(); System.out.println("Hello from B!"); } } ``` 在上面的例子中,对象 A 的构造函数中,用 new B(this) 把对象 A 自己作为参数传递给了对象 B 的构造函数。 5. 注意匿名类和内部类中的 this 在 Java 中,有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿名类中用 this 时,这个 this 则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。例如: ```java public class A { int i = 1; public A() { Thread thread = new Thread() { public void run() { for (;;) { A.this.run(); try { sleep(1000); } catch (InterruptedException ie) { } } } }; thread.start(); } public void run() { System.out.println("i = " + i); i++; } public static void main(String args[]) throws Exception { new A(); } } ``` 在上面的例子中,thread 是一个匿名类对象,在它的定义中,它的 this 就是指匿名类对象自己。如果我们要使用外部类 A 的方法和变量的话,则应该加上外部类的类名 A.this。
- 粉丝: 47
- 资源: 7704
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- vmware-VMnet8一键启动和停止脚本
- 可移植的 Python 数据框库.zip
- 包含 Andrei Neagoie 的《从零到精通掌握编码面试 - 数据结构 + 算法》课程的所有代码示例,使用 Python 语言 .zip
- 数据库课程设计(图书馆管理系统)springboot+swing+mysql+mybatis
- C++ Vigenère 密码(解密代码)
- zblog日收站群,zblog泛目录
- C++ Vigenère 密码(加密代码)
- Vue Router 是 Vue 生态系统的一部分,是一个 MIT 许可的开源项目,其持续开发完全在赞助商的支持下成为可能 支持 Vue 路由器
- PM2.5 数据集 包含上海、成都、广州、北京、沈阳五地的PM2.5观测,csv文件
- 电动汽车与软件定义汽车(SDV)时代的汽车行业数字化转型