20220722-Java中this关键字
this关键字知识总结
学习资源:B站韩顺平老师Java入门教学
代码示例1
public class This01 { public static void main(String[] args) { Dog d1 = new Dog("小黄", 3); d1.info(); System.out.println("对象d1的hashcode=:" + d1.hashCode()); System.out.println("---------------"); Dog d2 = new Dog("小花", 2); d2.info(); System.out.println("对象d2的hashcode=:" + d2.hashCode()); } } class Dog { int age; String name; // 根据变量的作用域原则,方法中的name与age实际指的是局部变量而不是成员变量 // public Dog(String name, int age) { // name = name; // age = age; // } // java虚拟机会给每个对象分配this,代表当前对象 public Dog(String name, int age) { this.name = name; this.age = age; System.out.println("构造器中:this.hashcode=:" + this.hashCode()); } public void info() { System.out.println("狗狗名字叫:" + this.name + "\n年龄:" + this.age); System.out.println("成员方法中:this.hashcode=:" + this.hashCode()); } }
代码示例2
public class ThisDetail { public static void main(String[] args) { T t1 = new T(); t1.f2(); System.out.println("---------------"); T t2 = new T(10); System.out.println("---------------"); T t3 = new T("小明", 10); System.out.println(t1.name + "==" + t1.age); System.out.println(t2.name + "==" + t2.age); System.out.println(t3.name + "==" + t3.age); } } class T { int age; String name; // 细节1:访问成员方法的语法:this.方法名(参数列表); public void f1() { System.out.println("f1()方法.."); } public void f2() { System.out.println("f2()方法.."); // 在f2()中调用f1() // 第一种方法 f1(); // 第二种方法 this.f1(); } // 细节2:调用构造器语法:this(参数列表); 只能在构造器中使用,只能放在构造器的首句 T() { this.name = "小李"; this.age = 18; System.out.println("调用构造器1"); } T(int age) { this(); this.age = age; System.out.println("调用构造器2"); } T(String name, int age) { this(age); this.name = name; System.out.println("调用构造器3"); } }
注意事项与使用细节
- this关键字可以用来访问本类的属性、方法、构造器;
- this用于区分当前类的属性和局部变量;
- 访问成员方法的语法:this.方法名(参数列表);
- 访问构造器语法:this(参数列表); 注意:只能在构造器中使用,且需要为构造器中的首行;
- this不能在类定义的外部使用,只能在类定义的方法中使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)