精华内容
下载资源
问答
  • 的this即代表Student,另外要注意一点,this关键字只能在方法使用方法使用是编译不通过的!!! 用法一:this.属性名 this表示当前类,this.属性名可以给当前类的属性赋值,可以在本类除静态方法外的...

    首先我们需要知道this代表什么??


    this关键字代表本类,例如Class Student
    类中的this即代表Student,另外要注意一点,this关键字只能在方法内使用,方法外使用是编译不通过的!!!

    用法一:this.属性名
    this表示当前类,this.属性名可以给当前类的属性赋值,可以在本类中除静态方法外的任何方法(包括构造器、私有方法)中使用,这里要注意static的特性(1.遵循静态调用 2·stati关键字不能与this、super关键字共用)。
    另外,若本类成员变量与方法内局部变量同名,this.属性名代表的是什么呢??
    当然是局部变量了,因为Java遵循就近原则,通俗地讲,就是谁离我近,我就代表谁。
    代码实现:

    class Student{
        String name;
        public void hello(){
            this.name=name;
        }
    }

    用法二:this.方法
    这里比较好理解,this代表本类,this.方法即调用方法,除了静态方法中不可使用,本类其他方法包括私有方法均可使用此格式调用其他方法,只是我们通常省略this关键字。
    代码实现:

    class Student{
        String name;
        public void hello(){
            this.name=name;
        }
    //    this.name=name;this需要在方法内使用
        public void hi(){
            this.hello();
            hello();
            he();
        }
        private void he(){
            this.name=name;
            hello();
            this.he();
        }
    }


    用法三:this()
    此格式用于构造器内,比如我们可以在无参构造内调用含参构造,那么这时候就需要在this()传入参数来实现,同理要想在含参构造内调用无参构造,只需在构造器代码第一行写this()即可,但是注意,this()与this(参数列表)不可同时使用!
    代码实现:

    public Student(){
            this("name");
            this.name=name;
         this.he();
        }
        public Student(String name){
    //        this();两个this不能一起使用
        }

     注意:

     static void play(){
    //        this.name=name;静态不能调用非静态
        }

    若有错请批评指正,共勉~

    展开全文
  • Java中this关键字的作用和用法

    万次阅读 多人点赞 2018-09-03 19:22:39
    简单总结一下Java中this关键字的作用与用法。 参考文献: Java中this关键字详解 Java this 关键字用法 java中this关键字的用法 Java this关键字 java中this关键字的作用 功能概述 this关键字主要有三个应用...

    写在前面

    简单总结一下Java中this关键字的作用与用法。

    参考文献:

    功能概述

    this关键字主要有三个应用:

    1. this调用本类中的属性,也就是类中的成员变量;
    2. this调用本类中的其他方法;
    3. this调用本类中的其他构造方法,调用时要放在构造方法的首行。

    下面主要按照这三个基本功能进行解释。

    调用成员变量

    结合代码来说,会更加具体一些。参考下面这段代码:

    public class Student{
        String name;
        private void SetName(String name){
            this.name = name;
        }
    }

    这段代码中,创建了一个类Student,有成员变量name与成员方法SetName(String name),由于成员方法接收的形参名称与成员变量相同,都是name,所以,这里可以使用this关键字来调用本类中的成员变量。其作用可以简单的这么理解:this关键字就是调用本类中的成员变量。

    但是这样简单的理解并不准确,this其实是当前类对象的引用,通过当前这个类实例化的对象的引用来访问对象的成员变量。

    注意:

    this关键字访问类的成员变量和成员函数时不受访问权限的控制,可以访问本类中所有的成员变量和方法,包括private的成员变量和方法。也可以通过this访问本类的static成员,不过由于static成员可以通过类名直接访问,如果通过this来访问会有“The static field ××× should be accessed in a static way”的警告信息。不能在类的static成员或static块中使用this。

    调用成员方法

    可参考如下代码:

    package Test;
    
    public class ThisTest {
        String name;
    
        private void setName(String name) {
            this.name = name;
            System.out.println("setName: " + this.name);
        }
    
        private void thisTest(String name) {
            this.setName(name);
            System.out.println("thisTest: " + this.name);
        }
    
        public static void main(String[] args) {
            ThisTest tt = new ThisTest();
    
            tt.setName("Yida");
            tt.thisTest("Jenny");
    
        }
    }

    这段代码中,首先创建了Test类,该类与之前的没什么区别,只是增加了一个成员方法thisTest(),在这个成员方法中,通过this关键字调用了之前的成员函数setName(),程序运行结果如下所示:

    setName: Yida
    setName: Jenny
    thisTest: Jenny

    调用构造方法

    构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(paras…)来调用其他的构造方法。

    使用this来调用其他构造方法有如下几个约束:

    • 只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。
    • 不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用该构造方法本身。
    • 通过this调用其他构造方法必须放在构造方法的第一行中执行。
    • 由于super调用父类的构造函数也必须放在构造方法的第一行中执行,因此,通过this和super调用构造方法不能同时出现一个构造方法中。也不能在一个构造方法中多次调用不同的构造方法。

    以下代码是错误的,因为通过this关键字,形成了递归调用:

    //错误的示例!!!
    class test {
        test() {
            this(1);
        }
        test(int a){
            this();
        }
        tes int b) {
            this(1, 2);
        }
    }

    正确的使用如下所示:

    public class Student { //定义一个类,类的名字为student。 
        public Student() { //定义一个方法,名字与类相同故为构造方法
            this(“Hello!”);
        }
        public Student(String name) { //定义一个带形式参数的构造方法
        }
    }

    返回对象的值

    this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。

    展开全文
  • this关键字: 每实例化一个对象就会实例化一个this; this是一个对象中隐藏的引用变量,它保存了当前对象的内存地址,指向自身; this存储在堆内存当中对象的内部。 this只能使用在实例方法中。谁调用这个实例方法...

    关于this关键字的使用:

    1、this的单独使用:

    (1)每实例化一个对象就会实例化一个this。

    (2)this是一个对象中隐藏的引用变量,它保存了当前对象的内存地址,指向自身。

    (3)this存储在堆内存当中对象的内部。

    (4)this只能使用在实例方法中。谁调用这个实例方法,this就是谁。显然静态方法中不能使用this,因为静态方法的调用不需要实例化对象的参与。

    (5)this大部分时候可以省略,在实例方法中,或者构造方法中,为了区分实例变量与局部变量,这种情况下,this不能省略。


    2、this()的使用:

    新语法,如果当前的构造方法区调用另一个本类中的构造方法时,可以使用this(参数列表),也就是当前构造方法的代码和被调用的构造方法里的代码类似时,在当前构造方法中使用this(参数列表),实现代码复用。

    注意:在构造方法,this()只能出现的第一行,并且每个构造方法中最多只能有一个this()。


    测试代码:

    public class MyTest{
    	
    	public static void main(String[] args) {
    		Animal a1 = new Animal();
    		System.out.println(a1.getName()); //输出:未知动物
    		
    		Animal a2 = new Animal("Cat");
    		System.out.println(a2.getName()); //输出:Cat
    	}
    }
    
    class Animal {
    	//封装私有属性:名字
    	private String name;
    	//setter and getter
    	public void setName(String name) {
    		this.name = name; //当局部变量与类中属性变量名一样,此时this不能省略
    	}
    	public String getName() {
    		return name;
    	}
    	//构造函数
    	public Animal() {
    		this("未知动物"); //调用另一个构造方法,this()只能出现在构造方法的第一行
    	}
    	public Animal(String name) {
    		this.name = name;
    	}
    }
    

    展开全文
  • 在学习Java中类的时候,你一定会接触到this关键字this关键字指向的是当前对象的引用。 详解 首先,定义一个Person类 public class Person { String name; //名字 //参数who是对方的名字 //成员变量name自己的...

    关键词:this

    介绍

    在学习Java中类的时候,你一定会接触到this关键字。this关键字指向的是当前对象的引用。

    详解

    首先,定义一个Person类

    public class Person {
        String name;    //名字
        //参数who是对方的名字
        //成员变量name自己的名字
        public void sayHello(String who) {
            System.out.println(who + ",你好,我是:" + name);
        }
    }
    

    再定义一个测试用例来访问Person类

    public class Demo01Person {
        public static void main(String[] args) {
            Person person = new Person();
            //设置我自己的名字
            person.name = "菜鸟";
            person.sayHello("大佬");
        }
    }
    
    

    在这里插入图片描述
    以上的代码是没有问题的。那么,下面的代码改了参数名称:
    在这里插入图片描述
    Person类

    public class Person {
        String name;    //名字
        //参数who是对方的名字
        //成员变量name自己的名字
        public void sayHello(String name) {
            System.out.println(name + ",你好,我是:" + name);
    }
    
    

    这时候的输出结果是:大佬,你好,我是:大佬。显然,是参数的问题。
    这时候,应该知道的是:
    当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量。如果需要访问本类当中的成员变量,需要使用格式:
    this.成员变量名

    在测试用例中,我们可以看到的是,person调用了sayHello()的方法,那么看以下通过this来访问成员变量的代码

    public class Person {
        String name;    //名字
        //参数who是对方的名字
        //成员变量name自己的名字
        public void sayHello(String name) {
            System.out.println(name + ",你好,我是:" + this.name);
    }
    

    在这里插入图片描述
    可以看到的输出结果是大佬,你好,我是:菜鸟

    证明

    在成员方法中的person调用了sayHello(),通过person调用方法,那么person就是this,
    this.name其实就等价于person.name

    接下来将进行证明:
    打印出各自的person中name的地址,可以看到通过this的name和person的name,内存地址是相同的。
    在这里插入图片描述

    Person类代码

    package com.itwcn.demo02;
    
    /**
     * @program: Person
     * @description:
     * @author: OriginalCoder
     * @createtime:2020/10/27 20:54
     **/
    
    /**
     * 当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量
     * 如果需要访问本类当中的成员变量,需要使用格式:
     * this.成员变量名
     */
    
    /**
     * 通过谁调用的方法,谁就是this
     */
    public class Person {
        String name;    //名字
        //参数who是对方的名字
        //成员变量name自己的名字
        public void sayHello(String name) {
            System.out.println(name + ",你好,我是:" + this.name);
            System.out.println(this);
        }
        //在成员方法中的person调用了sayHello(),通过person调用方法,那么person就是this,
        //this.name其实就等价于person.name
    
    }
    
    

    测试用例的代码:

    package com.itwcn.demo02;
    
    /**
     * @program: Demo01Person
     * @description:
     * @author: OriginalCoder
     * @createtime:2020/10/27 20:56
     **/
    
    public class Demo01Person {
        public static void main(String[] args) {
            Person person = new Person();
            //设置我自己的名字
            person.name = "菜鸟";
            person.sayHello("大佬");
            System.out.println(person);
        }
    }
    
    
    展开全文
  • 主要介绍了this关键字使用,通过调用构造方法,使用this关键字调用当前对象等详细介绍了this的特点和使用,需要的朋友可以参考下
  • 主要介绍了javathis关键字用法实例分析,较为详细的讲述了Java中this关键字的用法及适用范围,并附带实例程序加以说明,需要的朋友可以参考下
  • Java中this关键字的详解

    万次阅读 多人点赞 2018-07-20 21:45:32
    java的学习,当接触到类这一章的时候,就会避免不了的接触到this关键字。 首先,this关键字指向的是当前对象的引用 作用: this.属性名称 指的是访问类的成员变量,用来区分成员变量和局部变量(重名...
  • 因此this只能在类中的非静态方法中使用this是指当前对象,静态方法是通过类调用的方法,不需要实例化,既然不需要实例化,就没有当前对象,既然没有当前对象this也就用不上了)并且this只和特定的对象关联,而不和...
  • Java中this关键字(三种用法)

    千次阅读 多人点赞 2020-10-20 23:08:38
    this关键字的三种用法: 通过this关键字可以明确的访问一个类的成员变量,解决与局部变量名称冲突问题 通过this关键字调用成员方法 在构造方法中访问构造方法使用this([参数1,参数2,...])
  • 构造方法中this关键字 构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this...
  • 一、this关键字主要有三个应用: (1)this调用本类的属性,也就是类的成员变量; (2)this调用本类的其他方法; (3)this调用本类的其他构造方法,调用时要放在构造方法的首行。 Public Class Student { String...
  • Java面向对象程序设计 封装 主讲人何鑫 软件技术专业教学资源库 this关键字 第三部分 调用本类的成员变量 调用本类的其他方法 调用本类的构造方法 = 何老师; this.department = "信息工程系; this.showInfo; ...
  • this关键字使用详细介绍:在JAVA程序似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不...
  • 1、this关键字在构造方法中使用 一、this关键字 在之前我们知道了在“this.属性名”和“this.方法名()” 的情况下this表示使用该类创建的对象的引用,但是还要一种方式就是this(),这种是在构造方法中才能出现的...
  • Java之路:this关键字用法

    万次阅读 多人点赞 2018-12-15 09:42:22
    (4)可以使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。 (5)this不能用于static方法。 用this调用构造方法 package this_const...
  • *当方法的局部变量和类的变量名重名时,在不使用this的情况下会有什么结果? Person String name;//定义当前Person名字 //参数name是目标名字 //成员变量name是自己名字 public void sayHello(String name) { ...
  • java中this关键字用法

    2018-05-30 19:17:02
    一、this关键字主要有三个应用: (1)this调用本类的属性,也就是类的成员变量; (2)this调用本类的其他方法; (3)this调用本类的其他构造方法,调用时要放在构造方法的首行。 Public Class Student...
  • /*父类在hello()方法中使用this关键字调用say()方法*/ public class Parent { public void hello(){ this.say(); } public void say(){ System.out.println("I am parent"); } } /*子类重写say方法*/...
  • 写在前面 简单总结一下Java中this关键字的作用与用法...Java中this关键字详解Java this 关键字用法java中this关键字的用法Java this关键字java中this关键字的作用 功能概述 this关键字主要有三个应用: this调用...
  • this关键字代表当前类对象创建时的引用(调用方法或者属性时的那个对象),由于在编写类时对象还没有创建,所以用this来指代对象引用,当对象被创建出来时,this指代的是某一个对象引用 代码示例 public class ...
  • 用法一: 当局部变量和成员变量重名时,方法会遵守就近...其中getset方法中this为这个用法 public class Person { private String name;//姓名 private int age;//年龄 //this.name :当前对象的name属性 //na...
  • Java中this关键字使用 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! this.属性名 普通方法访问其他方法、成员变量时无须使用 this...
  • java中this关键字

    2020-07-09 15:56:33
    java中this关键字 1.概述 在Java中this关键字比较难理解,它的作用和其词义很接近。  它在方法内部使用,即这个方法所属对象的引用;  它在构造器内部使用,表示该构造器正在初始化的对象。 this 可以调用类...
  • 按照官方正规的解释,this关键字的意义被解释为“指向当前对象的引用”。这个解释非常准确并且很精炼,但它太过学术化了,导致很多初学者有点读不懂,更谈不上深入理解它的意义。本文将用大白话的形式帮助初学Java的...
  • super关键字用法有三种: 1.在子类的成员方法中,访问父类的成员变量。 2.在子类的成员方法中,访问父类的成员方法。 3.在子类的构造方法中,访问父类的构造方法。 public class Zi extends Fu { int num = 20; ...
  • java中this关键字三个作用

    千次阅读 2020-03-19 15:42:15
    this关键字主要有三个应用: (1)this调用本类的属性,也就是类的成员变量; (2)this调用本类的其他方法; (3)this调用本类的其他构造方法,调用时要放在构造方法的首行。 Public Class Student { String ...
  • Java中this关键字的三种用法

    千次阅读 2020-03-24 19:56:51
    this关键字只能在方法内部使用 ②this表示对“调用方法的那个对象”的引用–《Thinking in java》 ③ 1、this.属性名 // 创建构造方法,为属性赋初始值 public Teacher(String name,double salary,int age) { ...
  • Java中this关键字底层原理

    千次阅读 2019-08-02 00:34:12
    this关键字大家都很熟悉,天天见到,主要有以下三个用途: 1.this调用本类的属性,也就是类的成员变量; 2.this调用本类的其他方法; 3.this调用本类的其他构造方法(只能引用一个构造方法且必须位于首行...
  • Java中this关键字的四种用法详解

    千次阅读 2018-09-11 10:30:12
    this关键字只能在方法内部使用 this共有四种用法,分别是调用成员变量、调用成员方法、调用其他重载的构造器、表示当前对象。掌握this的用法十分重要,下面来详细介绍这四种用法。 this调用成员变量 使用this...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 275,853
精华内容 110,341
关键字:

java中this关键字的用法

java 订阅