Java中的this关键字(三种用法)

Java中的this关键字(三种用法)this关键字的三种用法:通过this关键字可以明确的访问一个类的成员变量,解决与局部变量名称冲突问题通过this关键字调用成员方法在构造方法中访问构造方法使用this([参数1,参数2,…])

大家好,又见面了,我是你们的朋友全栈君。

this关键字的三种用法:

  • 通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突问题。
    实例:
public class Student { 
   
   //定义四个成员变量
   String name;
   int age;
   long phone;
   String address;
   //有参构造方法
   public Student(String name, int age, long phone, String address) { 
   
        this.name = name;
        this.age = age;
        this.phone = phone;
        this.address = address;
    }
   //成员变量的get/set方法
   public String getName(){ 
   
       //访问的是成员变量name
       return this.name;
   }
   
   public void setName(String name) { 
   
        this.name = name;
    }
}

上面代码中构造方法中定义的参数name,age等它是局部变量,在类中也定义了name,age等成员变量,在构造方法中使用age则是访问局部变量,如果想访问类中的成员变量,使用this.age则是访问成员变量。

  • 通过this关键字调用成员方法
    实例:
public class Student { 
   

    public void test1(){ 
   
        System.out.println("test1方法执行了......");
    }
    
    public void test2(){ 
   
    	//调用test1()方法
        this.test1();
    }
}

在test2()方法中通过this.test1()访问test1()方法,注意此处的this关键字可以不写,效果是一样的。

public class Student { 
   

    public void test1(){ 
   
        System.out.println("test1方法执行了......");
    }
    
    public void test2(){ 
   
    	//调用test1()方法
        test1();
    }
}
  • 在构造方法中访问构造方法使用this([参数1,参数2,…])
    实例:
public class Student { 
    
	//成员变量name
    String name;
    
    public Student() { 
   
        System.out.println("这是无参构造方法....");
    }

    public Student(String name) { 
   
    	//调用无参构造方法
        this();
        this.name = name;
    }

    public void printName(){ 
   
        System.out.println("姓名:" + name);
    }

    public static void main(String[] args) { 
   
        Student student = new Student("小明");
        student.printName();
    }
}

在有参构造方法中调用了无参构造方法,在使用this调用构造方法时有以下注意几点:

  • 只能在构造方法中使用this()调用其他的构造方法,不能在成员方法中使用。
  • 在构造方法中使用this()调用构造方法的语句必须位于第一行,而且只能出现一次。
  • 不能在一个类中的两个构造方法中使用this()互相调用。
public class Student { 
   
	//成员变量
    String name;
    
    public Student() { 
   
        System.out.println("无参构造方法...");
        //错误,必须位于第一行
        this("张三");
    }
    
    public Student(String name) { 
   
        this.name = name;
    }
  }
public class Student { 
   
    String name;//成员变量
    
    public Student() { 
   
    	//错误,不能相互调用
        this("张三");
    }
    
    public Student(String name) { 
   
    	//错误,不能相互调用
        this();
    }
}

加油吧!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148640.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 安装并使用EVE模拟器

    安装并使用EVE模拟器本文提供的软件及相关镜像有:VMWareEVECommunityVMversion2.0.3-95Wireshark-win64-2.6.4CiscoIOL镜像(路由器、交换机)CRTWindowsXP镜像安装步骤如下:1.进行VMWare的安装a.在安装包文件夹内选择“VMware-workstation-full-15.0.0-10134415”的应用程…

    2022年6月12日
    48
  • pytest的使用_java中方法的调用

    pytest的使用_java中方法的调用Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

    2022年7月30日
    5
  • C#中遍历ArrayList的三种方法(转)

    C#中遍历ArrayList的三种方法(转)usingSystem;usingSystem.Collections;usingSystem.Linq;usingSystem.Text;namespaceArrayListDemo{classProgram{staticvoidMain(string[]args){…

    2022年7月22日
    10
  • Sql 语句中 IN 和 EXISTS 的区别及应用「建议收藏」

    Sql 语句中 IN 和 EXISTS 的区别及应用「建议收藏」演示demo表:student表DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`stuid`varchar(16)NOTNULLCOMMENT’学号’,`stunm`varchar(20)NOTNULLCOMMENT’学生姓名’,PRIMARYKEY(`stuid`))ENGINE=In…

    2022年7月27日
    9
  • 2021全国大学生电子设计竞赛–电源–三相逆变(硬件)「建议收藏」

    2021全国大学生电子设计竞赛–电源–三相逆变(硬件)「建议收藏」废话不多说,直接上电路!三相逆变系统的框架如下::那么,降压电路不用多说,网上多得是1、下面说一下逆变驱动电路,也是通篇一律,这里贴上电路图,2、LC滤波器很多人会问我,LC如何选取,还有人在问,为啥我做出来之后发现电感在出声?答:第一个问题,网上可以搜得到,就是一个公式,以基波50HZ进行计算就行。第二个问题,有时候电感明明很大了,仍然出声音,其实那不是电感的问题,由于瓷片电容本身结构的问题,所以就睡导致在高频下的振荡出声,如果换成安规电容或者CBB就会…

    2022年5月25日
    43
  • 局域网vlan配置步骤_局域网vlan划分案例

    局域网vlan配置步骤_局域网vlan划分案例计算机网络技术的发展犹如戏剧舞台,你方唱罢我登台。从传统的以太网(10Mb/s)发展到快速以太网(100Mb/s)和千兆以太网(1000Mb/s)也不过几年的时间,其迅猛的势头实在令人吃惊。而现在中大型规模网络建设中,以千兆三层交换机为核心的所谓“千兆主干跑、百兆到桌面”的主流网络模型已不胜枚举。现在,网络业界对“三层交换”和VLAN这两词已经不感到陌生了。一、什么是三…

    2026年1月21日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号