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();
}
}
随机推荐
- HTML5和css3的总结三
继续总结H5的新东西 1>序列化与反序列化 序列化:其实就是一个json->string的过程 JSON.stringify(json); 反序列化:string->json的过程( ...
- wid是一个字符串 必须转化成整型
wid是一个字符串 必须转化成整型
- 21Spring_JdbcTemplatem模板工具类的使用——配置文件(连接三种数据库连接池)
上一篇文章提到过DriverManagerDataSource只是Spring内置的数据库连接池,我们可选的方案还有c3p0数据库连接池以及DBCP数据库连接池. 所以这篇文章讲一下上面三种数据库连接 ...
- yslow性能优化的35条黄金守则
参考Best Practices for Speeding Up Your Web Site Exceptional Performance 团队总结了一系列优化网站性能的方法,分成了7个大类35条, ...
- 转载:有关SQL server connection KeepAlive 的FAQ
转:http://blogs.msdn.com/b/apgcdsd/archive/2011/05/03/sql-server-connection-keepalive-faq.aspx 1.什么是S ...
- shell案例
调用同目录下的ip.txt内容: 路径 [root@lanny ~]# pwd /root txt文件 [root@lanny ~]# cat ip.txt 10.1.1.1 10.1.1.2 10. ...
- Java Concurrency in Practice 读书笔记 第十章
粗略看完<Java Concurrency in Practice>这部书,确实是多线程/并发编程的一本好书.里面对各种并发的技术解释得比较透彻,虽然是面向Java的,但很多概念在其他语言 ...
- Chrome 消息传递机制
Chrome插件开发入门(二)——消息传递机制 Blog | Qiushi Chen 2014-03-31 9538 阅读 Chrome 插件 由于插件的js运行环境有区别,所以消息传递机制是一个重要 ...
- Activiti系列——如何在eclipse中安装 Activiti Designer插件
这两天在评估jbpm和Activiti,需要安装一个Activiti Designer插件试用一下. 一.在线安装 从<Activiti实战>了解到可以通过如下方式安装 打开Eclipse ...
- RocEDU.阅读.写作《你的灯亮着吗?》
<你的灯亮着吗?> 一.对本书的认识 这本书的作者就如何训练思维能力指点迷津.书中提及的观点包括"问题是理想状态和现实状态之间的差别",以及"无论表面上表现的 ...