当前位置: 首页 > news >正文

Java基础 4.18

1.对象创建的流程分析

案例

class Person {int age = 90;String name;public Person(String pName, int pNum) {name = pName;age = pNum;}
}

流程分析

  1. 加载Person类信息(Person.class),只会加载一次
  2. 在堆中分配空间(地址)
  3. 完成对象初始化[3.1 默认初始化 age = 0, name = null 3.2 显式初始化 age = 90, name = null 3.3 构造器的初始化 age = 20, name = 小倩] 
  4. 在对象在堆中的地址,返回给p(p是对象名,也可以理解为是对象的引用)

2.this关键字

public class This01 {public static void main(String[] args) {Dog dog = new Dog("Tom", 10);dog.ac();}
}class Dog {String name;int age;public Dog(String dName, int dAge) {name = dName;age = dAge;}public void ac() {System.out.print("name = " + name + " age = " + age);}
}

引入

  • 如果我们构造器的形参能够直接写成属性名就更好了
  • 但是出现一个问题,根据变量的作用域原则 构造器的name是局部变量 不是属性 age是局部变量 不是属性

什么是this

Java虚拟机会给每个对象分配this,代表当前对象 

public Dog(String name, int age) {this.name = name;this.age = age;}

 

相关文章:

  • ctfshow-大赛原题-web702
  • 基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法
  • 云计算(Cloud Computing)概述——从AWS开始
  • 守护进程编程
  • 音视频之H.265/HEVC变换编码
  • kafka jdbc connector适配kadb数据实时同步
  • Uniapp调用native.js使用经典蓝牙串口通讯方法及问题解决
  • Web 前端包管理工具深度解析:npm、yarn、pnpm 全面对比与实战建议
  • 第五章 SQLite数据库:4、SQLite 进阶用法:常见的约束、PRAGMA 配置、数据操作
  • 微信小程序怎么分包步骤(包括怎么主包跳转到分包)
  • UE5 渲染视频
  • RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库
  • 力扣刷题-热题100题-第35题(c++、python)
  • 捕鱼船检测数据集VOC+YOLO格式2105张1类别
  • 【工具-Krillin AI】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~
  • BFS DFS ----习题
  • C语言教程(十):C 语言函数详解
  • 数据结构之队列及其应用
  • Openfein实现远程调用的方法(实操)
  • 聊一聊接口测试是如何进行的?
  • 国家发改委答澎湃:将指导限购城市针对长期摇号家庭和无车家庭等重点群体定向增发购车指标
  • 我国首个核电工业操作系统发布,将在华龙一号新机组全面应用
  • 伊朗外长:美伊谈判进展良好,讨论了很多技术细节
  • 年客流超2500万,九岁的上海国际旅游度假区有哪些文旅商体实践?
  • 国家数据发展研究院在京正式揭牌
  • 机票搜索热度飙升,透过数据看五一假期旅游热度