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不能在类定义的外部使用,只能在类定义的方法中使用
20220722-Java中this关键字的更多相关文章
- Java中的关键字 transient
先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...
- 【转】java中volatile关键字的含义
java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- Java中native关键字
Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546) 今日在hibernate源代码中遇到了nati ...
- Java复习笔记--java中this 关键字
Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...
- Java中this关键字的使用
本文介绍了在Java中this关键字的作用于使用方法 当局部变量和成员变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this指的是当前对象自己) 如:public class ...
- Java中this关键字在构造方法中的使用
1. Java中this关键字代表对象本身.用this关键字可以在类的内部调用属性和方法,这样代码的可读性比较高,因为它明确的指出了这个属性或方法的来源. 2. 同时在构造函数中也可以使用this关键 ...
- 慕课网-安卓工程师初养成-2-1 Java中的关键字
来源:http://www.imooc.com/code/1176 Java 中常用关键字: 问:这么多,记不住啊......-_-|| 答:现在不需要你记住所有,混个眼熟即可,在学习的过程中,你会逐 ...
- 转:java中volatile关键字的含义
转:java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- Java中final关键字修饰变量、方法、类的含义是什么
Java中的关键字final修饰变量.方法.类分别表示什么含义? 先看一个简单的介绍 修饰对象 解释说明 备注 类 无子类,不可以被继承,更不可能被重写. final类中的方法默认是final的 方法 ...
随机推荐
- django-rest-framework 基础二 序列化器和路由
django-rest-framework 基础二 序列化器和路由 目录 django-rest-framework 基础二 序列化器和路由 1. 序列化器 1.1 Serializer的使用 1.2 ...
- Java学习笔记-学生管理系统
Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...
- HMS Core使能AI智慧体验,共建创新应用生态
5月17日,2022年搜狐科技峰会成功举办,峰会汇聚各界大咖,共同探讨AI 技术的深入应用以及行业数字化的发展趋势.华为终端云服务应用生态BU总裁望岳发表题为<使能AI智慧体验,共建创新应用生态 ...
- 4.0 vue绑定dom属性和函数的方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 136. Single Number - LeetCode
Question 136. Single Number Solution 思路:构造一个map,遍历数组记录每个数出现的次数,再遍历map,取出出现次数为1的num public int single ...
- 好客租房48-组件的props(基本使用)
组件是封闭的 要接受外部数据应该通过props来实现 props的作用:接受传递给组件的数据 传递数据:给组件标签添加属性 接收数据:函数组件通过参数props接收数据 类组件通过this.props ...
- 【leetcode】239. 滑动窗口最大值
目录 题目 题解 三种解法 "单调队列"解法 新增.获取最大值 删除 代码 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以 ...
- 个人冲刺(二)——体温上报app(二阶段)
冲刺任务:完成app首页.第二页面和特殊情况的页面布局 activity_main.xml <?xml version="1.0" encoding="utf-8& ...
- 使用docker创建和运行跨平台的容器化的mssql数据库
我们一般启用sql server数据库要么选择安装SQL Server实例和管理工具(SSMS),要么用vs自带的数据库.如今net跨平台成为趋势,今天给大家介绍另一种我最近在玩的方式,即使用dock ...
- Unity-UGUI-无限循环列表
前言:项目准备新增一个竞技场排行榜,策划规定只显示0-400名的玩家.我一想,生成四百个游戏物体,怕不是得把手机给卡死?回想原来在GitHub上看到过一个实现思路就是无限循环列表,所以就想自己试试.公 ...