当前位置: 首页 > news >正文

this的使用

1、使用this调用本类中的属性

 1 class Person{
 2     private String name;
 3     private int age;
 4     public Person(String name,int age){
 5         name=name;
 6         age=age;
 7     }
 8     public String getInfo(){
 9         return "姓名:    "+name+"年龄:    "+age;
10     }
11 }
12 
13 public class ThisDemo{
14     public static void main(String[]  args)
15     {
16         Person per1=new Person("张三",33);
17         System.out.println(per1.getInfo());
18     }
19 }

上述结果说明:现在的构造方法并不能成功把传递进去的值赋值给类中的属性。也就是说,在赋值时属性并不是明确地被指出。实际上name=name;age=age;都是构造方法中的参数。

 

 1 class Person{
 2     private String name;
 3     private int age;
 4     public Person(String name,int age){
 5         this.name=name;
 6         this.age=age;
 7     }
 8     public String getInfo(){
 9         return "姓名:    "+name+"年龄:    "+age;
10     }
11 }
12 
13 public class ThisDemo{
14     public static void main(String[]  args)
15     {
16         Person per1=new Person("张三",33);
17         System.out.println(per1.getInfo());
18     }
19 }

 

 2、使用this调用构造方法

 1 class Person{
 2     private String name;
 3     private int age;
 4     
 5         public Person()
 6         {
 7             System.out.println("一个新的Person对象被实例化。    ");
 8         }
 9     
10     public Person(String name,int age)
11     {
12         this();
13         this.name=name;
14         this.age=age;
15     }
16     
17     public String getInfo(){
18         return "姓名:    "+name+"年龄:    "+age;
19     }
20 }
21 
22 public class ThisDemo{
23     public static void main(String[]  args)
24     {
25         Person per1=new Person("张三",33);
26         System.out.println(per1.getInfo());
27     }
28 }

 

 1 class Person{
 2     private String name;
 3     private int age;
 4     
 5         public Person()
 6         {
 7             System.out.println("一个新的Person对象被实例化。    ");
 8         }
 9     
10     public Person(String name,int age)
11     {
12         //this();
13         this.name=name;
14         this.age=age;
15     }
16     
17     public String getInfo(){
18         return "姓名:    "+name+"年龄:    "+age;
19     }
20 }
21 
22 public class ThisDemo{
23     public static void main(String[]  args)
24     {
25         Person per1=new Person("张三",33);
26         System.out.println(per1.getInfo());
27     }
28 }

 

 1 class Person{
 2     private String name;
 3     private int age;
 4     
 5         public Person()
 6         {
 7             System.out.println("一个新的Person对象被实例化。    ");
 8         }
 9     
10     public Person(String name,int age)
11     {
12         //this();
13         this.name=name;
14         this.age=age;
15         this();
16     }
17     
18     public String getInfo(){
19         return "姓名:    "+name+"年龄:    "+age;
20     }
21 }
22 
23 public class ThisDemo{
24     public static void main(String[]  args)
25     {
26         Person per1=new Person("张三",33);
27         System.out.println(per1.getInfo());
28     }
29 }

说明构造方法是在实例化对象时被自动调用的,也就是说在类中的所有方法中,只有构造方法是被优先调用的,所以使用this调用构造方法必须也只能放在构造方法的第一行。

 

 1 class Person{
 2     private String name;
 3     private int age;
 4     
 5         public Person()
 6         {
 7             this.("xh",20);
 8             System.out.println("一个新的Person对象被实例化。    ");
 9         }
10     
11     public Person(String name,int age)
12     {
13         //this();
14         this.name=name;
15         this.age=age;
16         this();
17     }
18     
19     public String getInfo(){
20         return "姓名:    "+name+"年龄:    "+age;
21     }
22 }
23 
24 public class ThisDemo{
25     public static void main(String[]  args)
26     {
27         Person per1=new Person("张三",33);
28         System.out.println(per1.getInfo());
29     }
30 }

说明this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其他构造方法。

 

 

3、this表示当前对象

 1 class Person{    
 2     public String getInfo(){
 3         System.out.println("Person类:    "+this);
 4         return null;
 5     }
 6 }
 7 
 8 public class ThisDemo{
 9     public static void main(String[]  args)
10     {
11         Person per1=new Person();
12         Person per2=new Person();
13         System.out.println("main:    "+per1);
14         per1.getInfo();
15         
16         System.out.println("main:    "+per2);
17         per2.getInfo();
18     }
19 }

 

转载于:https://www.cnblogs.com/xh0102/p/5707759.html

相关文章:

  • !!java web学习笔记(一到五)
  • (ibm)Java 语言的 XPath API
  • 一、java环境搭建
  • IE与firefox下的css区别
  • copy与strong的举例
  • 浅谈PHP与Java之Web开发整合技术
  • Notepad++中常用的插件
  • 多个.class 打包成 .jar
  • 当项目出现空闲时候,如何开展软件测试工作?
  • php中调用java类的方法
  • 利用SWFTools工具将pdf转换成swf
  • Thrift-java学习小结
  • Flex:使用FlexPaper显示PDF文档
  • SWFObject2.0两种调用方式
  • 异构SOA系统架构之Asp.net实现(兼容dubbo)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Angular Elements 及其运作原理
  • angular组件开发
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • flask接收请求并推入栈
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Lucene解析 - 基本概念
  • ng6--错误信息小结(持续更新)
  • Terraform入门 - 3. 变更基础设施
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 百度地图API标注+时间轴组件
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 构建二叉树进行数值数组的去重及优化
  • 将 Measurements 和 Units 应用到物理学
  • 排序算法学习笔记
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 手写双向链表LinkedList的几个常用功能
  • 我的业余项目总结
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​VRRP 虚拟路由冗余协议(华为)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %@ page import=%的用法
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动态规划)5. 最长回文子串 java解决
  • (分类)KNN算法- 参数调优
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十六)Flask之蓝图
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • ./configure,make,make install的作用
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @SuppressWarnings(unchecked)代码的作用