this的使用
1、使用this调用本类中的属性
class Person{
private String name;
private int age;
public Person(String name,int age){
name=name;
age=age;
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

上述结果说明:现在的构造方法并不能成功把传递进去的值赋值给类中的属性。也就是说,在赋值时属性并不是明确地被指出。实际上name=name;age=age;都是构造方法中的参数。
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

2、使用this调用构造方法
class Person{
private String name;
private int age;
public Person()
{
System.out.println("一个新的Person对象被实例化。 ");
}
public Person(String name,int age)
{
this();
this.name=name;
this.age=age;
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

class Person{
private String name;
private int age;
public Person()
{
System.out.println("一个新的Person对象被实例化。 ");
}
public Person(String name,int age)
{
//this();
this.name=name;
this.age=age;
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

class Person{
private String name;
private int age;
public Person()
{
System.out.println("一个新的Person对象被实例化。 ");
}
public Person(String name,int age)
{
//this();
this.name=name;
this.age=age;
this();
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

说明构造方法是在实例化对象时被自动调用的,也就是说在类中的所有方法中,只有构造方法是被优先调用的,所以使用this调用构造方法必须也只能放在构造方法的第一行。
class Person{
private String name;
private int age;
public Person()
{
this.("xh",20);
System.out.println("一个新的Person对象被实例化。 ");
}
public Person(String name,int age)
{
//this();
this.name=name;
this.age=age;
this();
}
public String getInfo(){
return "姓名: "+name+"年龄: "+age;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person("张三",33);
System.out.println(per1.getInfo());
}
}

说明this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其他构造方法。
3、this表示当前对象
class Person{
public String getInfo(){
System.out.println("Person类: "+this);
return null;
}
}
public class ThisDemo{
public static void main(String[] args)
{
Person per1=new Person();
Person per2=new Person();
System.out.println("main: "+per1);
per1.getInfo();
System.out.println("main: "+per2);
per2.getInfo();
}
}

随机推荐
- window7 右键菜单显示-》在此处打开命令窗口
window7 右键菜单显示->在此处打开命令窗口: 注册表中: HKEY_CLASSES_ROOT\Directory\Background\shell\cmd下将[Extended]重命名或 ...
- Android Studio使用中的异常
Android studio教程:[4]真机测试 1.连不上手机 Android Studio识别不了手机(最后还是恢复成勾中的状态),重启,Android Studio连接真机没反应? 2.连上手机 ...
- MySQL初始化简单优化
1,yum 2,源码 3,二进制 4,源码+yum 不管哪种方式装完成数据库,都需要对数据库做一些优化. 优化数据库 mysql> select host,user from mysql.us ...
- pyqt5界面与逻辑分离--信号槽的装饰器实现方式
本文展示了 pyqt5 信号槽的装饰器实现方式(借鉴自 eirc6) 一个简单的例子.实现功能:两个数相加,显示结果.如图 两个文件,第一个是界面文件 ui_calc.py # ui_calc.py ...
- Java Web利用POI导出Excel简单例子
采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private ...
- GDB深入研究
GDB深入研究 一.GDB代码调试 (一)GDB调试实例 在终端中编译一个示例C语言小程序,保存到文件 gdb-sample.c 中,用GCC编译之 #include <stdio.h> ...
- IOS开发之——友盟社会化分享UMSocial_SDK的使用
友盟第三方官方网址:http://dev.umeng.com/social/ios/quick-integration
- CUDA编程学习(四)
利用Block和Thread进行并行加速 _global_ void add(int *a, int *b, int *c) { int index = threadIdx.x + blockIdx. ...
- js实现黑客帝国二进制雨
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<对于RegExp反向引用的一点理解> 作者主页:myvin 博主QQ:851399101(点击QQ和博 ...
- js方式清空表单数据的两种方式
方法1:遍历页面元素 /* 清空FORM表单内容 id:表单ID*/ function ClearForm(id) { var objId = document.getElementByI ...