Java:this
Posted Hello-world-noname
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:this相关的知识,希望对你有一定的参考价值。
package com.demo.day;
public class This01
public static void main(String[] args)
Dog1 dog1 = new Dog1("耗子",3);
dog1.info();
class Dog1
String name;
int age;
// public Dog1(String dName,int dAge)
// name = dName;
// age = dAge;
//
//出现了一个问题,根据变量的作用域原则
//构造器的name 就是局部变量,而不是属性
//引出 ————> this 关键字
public Dog1(String name,int age)
this.name = name; //当前对象的属性name = 局部变量name
this.age = age; //当前对象的属性age = 局部变量age
//如果我们构造器的形参,能够直接写成属性名就更好了
public void info()
System.out.println(name + "\\t" + age + "\\t");
什么是this
java虚拟机会给每个对象分配this,代表当前对象。
使用hashCode()方法来查看this是否是本类的引用;
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
package com.demo.day;
public class This01
public static void main(String[] args)
Dog1 dog1 = new Dog1("耗子",3);
Dog1 dog2 = new Dog1("三花",2);
//调用hashCode()方法
System.out.println("dog1的hashcode:" + dog1.hashCode());
System.out.println("dog2的hashcode:" + dog2.hashCode());
// dog1.info();
class Dog1
String name;
int age;
// public Dog1(String dName,int dAge)
// name = dName;
// age = dAge;
//
//出现了一个问题,根据变量的作用域原则
//构造器的name 就是局部变量,而不是属性
//引出 ————> this 关键字
public Dog1(String name,int age)
this.name = name; //当前对象的属性name = 局部变量name
this.age = age; //当前对象的属性age = 局部变量age
//调用hashCode()方法
System.out.println("this.hashcode = " + this.hashCode());
//如果我们构造器的形参,能够直接写成属性名就更好了
public void info()
System.out.println(name + "\\t" + age + "\\t");
输出结果:
this.hashcode = 1324119927
this.hashcode = 81628611
dog1的hashcode:1324119927
dog2的hashcode:81628611
this小结
简单的说,哪个对象调用,this就代表哪个对象
this使用细节
- this关键字可以用来访问本类的属性、方法、构造器
- this用于区分当前类的属性和局部变量
- 访问成员方法的语法:this.方法名(参数列表);
- 访问构造器语法:this(参数列表); 注意只能在构造器中使用
- this不能在类定义的外部使用,只能在类定义的方法中使用
下面代码将上述细节呈现
package com.demo.day;
public class thisDetail
public static void main(String[] args)
// T1 t1 = new T1();
// t1.f2();
T1 t2 = new T1();
t2.f3();
class T1
String name = "Tom";
int num;
//细节:访问成员方法的语句:this.方法名(参数列表)
//注意:访问构造器语法:this(参数列表);必须放在构造器的第一条语句
//对构造器的访问 注意只能在构造器中使用,即不能成员方法访问构造器,只能构造器互相访问
public T1()
//从这里去访问 T1(String name,int age) 构造器
this("jack",21);//对this的调用必须是构造器中的第一个语句
System.out.println("T1() 构造器");
public T1(String name,int age)
System.out.println("T1(String name,int age) 构造器");
public void f1()
System.out.println("f1() 方法..");
public void f2()
System.out.println("f2() 方法..");
//调用本类的 f1
//第一种方式
f1();
//第二种方式
this.f1();
//this 关键字可以用来访问本类的属性
public void f3()
String name = "smith";//变量作用域的就近原则会导致下面的输出不同
//传统方式
System.out.println("name=" + name + "\\tnum=" + num);
//也可以使用this访问属性
System.out.println("name=" + this.name + "\\tnum=" + this.num);
测试
package com.demo.day;
public class TestPerson
public static void main(String[] args)
Person3 p = new Person3("smith",21);
Person3 p2 = new Person3("tom",21);
System.out.println(p.compareTo(p2));
class Person3
String name;
int age;
Person3(String name,int age)
this.name = name;
this.age = age;
public boolean compareTo(Person3 p)
// if (this.name.equals(p.name) && this.age == p.age)
// return true;
//
return this.name.equals(p.name) && this.age == p.age;
java中this在这里的用法意义?
toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));
toolBar.add(btnAdd);
toolBar.add(btnResetPwd);
toolBar.add(this.btnDelete);//为什么要用this?上面都木有用阿??
当我们不记得一个类的成员变量 或者变量名很长的时候 我们可以用this. 来达到自动提示的效果...
以上是关于Java:this的主要内容,如果未能解决你的问题,请参考以下文章