this关键字——java
来源:互联网 发布:微信支付接口开发 php 编辑:程序博客网 时间:2024/05/22 15:54
this 的概述
this关键字:
this关键字代表了所属函数的调用者对象。
this关键字的作用:
- 一个类中存在同名的成员变量与局部变量时,在方法的内部默认是访问局部 变量的,可以通过this关键字指定访问成员变量 的数据。
- this关键字还可以在构造函数中调用另外一个构造函数初始化对象,
this关键字调用构造函数要注意的事项:
- this关键字调用其他 的构造函数时,必须要是在第一个语句。
- this关键字调用构造函数时不能出现相互调用,因为是一个死循环。
- 如果在方法的内部访问一个变量时,该变量只存在于成员变量中,局部没有没有,这时候java编译器会为该变量的前面添加this关键字。
this关键字代表是对象的引用。也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用。
this还有哪些可以用的方便的地方:
假设定义40个成员变量,第一个有参构造初始化20个变量,第二个有参构造需要初始化40个变量。
- 第二个有参构造想要使用第一个有参构造。
- 成员函数相互之间可以调用。构造函数可以吗?(不可以)
- 编译失败,那么构造函数之间应该存在相互调用的模式。this就可以完成这个工作。
class Person { String name; int age; Person() { } Person(String n){ name=n; } Person(String n, int a) { //编译报错 Person(n); age = a; }}
总结:实际工作中,存在着构造函数之间的相互调用,但是构造函数不是普通的成员函数,不能通过函数名自己接调用
_所以sun公司提供this关键字。
this是什么
- 在构造函数中打印this
- 创建对象,打印对象名p
- this和p是一样的都是内存地址值。
- this代表所在函数所属对象的引用。
class Student { String name; String gender; int age; Student() { } Student(String name) { this(); this.name = name; } Student(String name, String gender, int age) { this(name); System.out.println(this); // Student@c17164 this.gender = gender; this.age = age; } void speak() { run(); System.out.println("姓名:" + name + " 性别:" + gender + " 年龄:" + age + " 哈哈!!!"); } void run() { System.out.println("run....."); }}
class Demo2 { public static void main(String[] args) { Student p = new Student("jack", "男", 20); System.out.println(p); // Student@c17164 Student p2 = new Student("rose", "女", 18); System.out.println(p2); p.speak(); }}
构造函数的相互调用
就会报错
如下
class Student { String name; String gender; int age; //构造函数间相互调用 Student() { this(null); } //构造函数间相互调用 Student(String name) { this(); this.name = name; } Student(String name, String gender, int age) { this(name); this.gender = gender; this.age = age; } void speak() { run(); System.out.println("姓名:" + name + " 性别:" + gender + " 年龄:" + age + " 哈哈!!!"); } void run() { System.out.println("run....."); }}
- this只能在非静态中(没有static修饰的)函数使用
- 构造函数间相互调用必须放在构造函数的第一个语句中,否则编译错误
- 可以解决构造函数中对象属性和函数形参的同名问题。
1 0
- java关键字——this
- Java——this关键字
- this关键字——java
- Java——This关键字
- java关键字之—this
- java学习笔记——this关键字
- Java关键字——super、this
- java学习日记——this关键字
- Java复习——this关键字
- Java——this关键字总结
- Java基础—super和this关键字
- JAVA—Super和this关键字
- java笔记——传递与this关键字
- Java基础知识——引用传递、this关键字
- 【小白的java成长系列】——this关键字
- 黑马程序员——Java(this关键字用法)
- 黑马程序员——Java基础---this和super关键字
- 黑马程序员——Java基础:面向对象、this关键字
- 百度2017春招笔试真题
- UVA
- LeetCode : Min Stack
- BZOJ 1927 [Sdoi2010]星际竞速
- 源码-Integer的缓存
- this关键字——java
- 织梦DEDE系统建站 站长必备使用技巧 绝对的干货 掌柜呕心沥血总结
- Spring自我学习
- BZOJ 2618 [Cqoi2006]凸多边形
- java 四种内部类 使用细节(含代码)
- 实现append()难点
- iOS 小知识-单元测试中测试线程竞争
- 一些常用的第三方控件
- BZOJ 3436 小K的农场