-使用场景一&this的原理图解
public class Person { private String name; /* 如果写成这样阅读性非常差不知道a是什么意思.如果将a写成name 当构造方法 * 进栈的时候相当于将name的值又从新赋值一次,但是成员变量的name属性并没有得到该构造函数赋给的值, * 构造函数中赋值就成了自己给自己又赋值了一次.相当于 int x = 3; x=x; * 这个时候this关键字出现了用来解决着个问题 * 当局部变量和成员变量重名时,可以使用this来区分 * * this:代表对象,代表当前对象 * this就是所在函数所属对象的引用 * 简单说:哪个对象调用了this所在函数,this就代表哪个对象 */ Person(String name) { name=name; } public void speak(){ System.out.println(name); } public static void main(String[] args) { Person p = new Person("Quinn"); p.speak(); } }
-内存分析
构造函数在给对象赋值的时候,怎么确保出现多个new Person("旺财") new Person("小明"),能正确的赋值正确呢? 答案是,在每次出现new Person()对象时候,调用相应构造函数给对象初始化操作时候,其实构造函数中有个隐藏的this关键字 (this也是有引用存在的)谁调用该构造函数在堆中创建了对象,构造函数中的this就通过引用指向创建对象的地址,在执行构造函数里面内容的时候,发现this.name(代表引用指向的所在堆中的相应地址)并进行赋值,然后弹栈.
其实普通函数中也有this关键字否则在调用的时候它怎么知道调用哪个对象的中的属性呢?
应用场景
public class Person { private String name; private int age; Person(String name) { this.name=name; } /**对this的调用必须是构造函数的第一行因为初始化动作要先执行*/ Person(String name,int age) { this(name); this.age=age; } public void speak(){ System.out.println(name+age); } public static void main(String[] args) { Person p = new Person("Quinn",10); p.speak(); } }
this基本应用
public class Person { private String name; private int age; Person(String name,int age) { this.age=age; } //this谁调用它,它代表谁,this代表p1 public void compare(Person p){ System.out.println(this.age>p.age ? this.age:p.age); } public static void main(String[] args) { Person p1 = new Person("Quinn",5); Person p2 = new Person("Quinn",7); p1.compare(p2); } }
相关推荐
this关键字的使用场景** - 在构造函数或方法中引用当前对象自身。 - 当方法参数名与类中的成员变量名称冲突时,可以使用`this`关键字明确指定使用成员变量。 - 调用当前类中的另一个构造方法。 **7. 构造器重载...
Java语言程序设计基础版第十版的第一章至第五章课后编程练习题答案涵盖了Java编程的基础概念和关键技能。这些章节的题目旨在帮助学习者深入理解Java语法、数据类型、控制结构、类与对象以及异常处理等核心概念。下面...
1. **面向对象的三大特征**: - **封装**:封装是指隐藏对象的属性和实现细节,只对外提供公共访问方式。 - **继承**:继承使得一个类(子类)可以继承另一个类(父类)的属性和方法。 - **多态**:多态是指程序...
多态是 Java 面向对象编程的第三大特征,通过重载、重写与覆盖,实现不同类的不同形态特征。多态使得类可以根据不同的情况表现出不同的形态,从而提高代码的灵活性和可维护性。 四、类和对象 类是 Java 面向对象...
`this`关键字用于引用当前对象,而`null`是一个特殊的值,表示没有对象引用(第13题)。 对象的赋值在Java中并不等同于复制,而是浅拷贝,意味着引用指向相同的内存位置。若要复制一个对象的所有属性,需要进行深...
第十一章 * 选择题: + Java的JOptionPane类是指对话框类。 + Java的ActionListener接口是指事件监听器接口。 * 填空题: + JOptionPane类是指对话框类。 + ActionListener接口是指事件监听器接口。 本文总结...
15 this关键字 17 16 方法调用时的引用传递还是值传递 19 17 面向对象语言的三大特性:封装,继承,多态 20 18 什么是封装?封装在哪? 20 18.1 封装的好处? 20 19 访问修饰符 20 20 面向对象的特性-继承 21 20.1 ...
Java是一种高级编程语言,它由Sun Microsystems(现已被Oracle公司收购)开发,是面向对象的、类型安全的、跨平台的编程语言。标题中的“变量重名”问题通常涉及到Java中的作用域和变量命名规则。 1. 在Java中,...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布。它的设计目标是提供“一次编写,到处运行”的能力,使得开发者能够编写程序,然后在多种硬件和操作...
#### 第六章:面向对象程序设计 **知识点概述**: 1. **抽象类**:包含抽象方法的类,不能被实例化。 2. **接口**:一组抽象方法的集合,用于定义类之间的契约关系。 3. **继承与实现**:子类继承父类的属性和方法...
### Java基础教程_第2部分面向对象程序设计 #### 一、面向对象程序设计的基本概念 面向对象程序设计(Object-Oriented Programming, OOP)是一种编程范式,它通过模拟现实世界中的对象来构建软件系统。OOP的核心...
020509_【第5章:面向对象基础】_this关键字笔记.pdf 020510_【第5章:面向对象基础】_static关键字笔记.pdf 020511_【第5章:面向对象基础】_理解main方法笔记.pdf 020512_【第5章:面向对象基础】_代码块笔记.pdf ...
第十三章 派生类 第十四章 派生类的存取权限 第十五章 构造函数和析构函数 第十六章 虚函数与多态性 第十七章 虚函数与抽象类 第十八章 运算符重载 第十九章 运算符重载、this 和and 第二十章 C++的预处理程序指令 ...
面向对象程序设计是一种编程范式,以对象为基本单位,通过封装、继承和多态三大特性来设计程序。浙江大学的《面向对象程序设计》课程旨在教授学生如何使用面向对象的思想来设计和实现程序,这通常包括使用C++或者...
在JavaScript中,`this`关键字是一个非常核心的概念,它的行为不同于其他面向对象语言。`this`的值在运行时取决于函数被调用的方式,而不是在定义时决定。本篇文章将详细探讨`this`的关键概念及其在不同场景下的应用...
11. **第十一章:面向对象进阶** - 接口:定义接口,实现接口 - 内部类:成员内部类、局部内部类、匿名内部类 - 泛型:类型参数,通配符,泛型方法,泛型类 - 注解:自定义注解,元注解,注解处理器 通过这11章...
1.面向对象的概念 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件...
面向对象编程是Java的核心特性,其三大基石包括封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,作为一个相互依赖的整体——即对象。它隐藏了对象的内部细节,只对外提供公共接口进行交互,增强了安全性...
- Java具有自动内存管理、面向对象、安全性高等特点。 - **Java开发环境搭建** - **安装Java JDK** - 下载最新版本的Java Development Kit (JDK)。 - 安装JDK并配置环境变量。 - **集成开发环境(IDE)的选择** ...