构造器详解

定义:

是一种特殊类型的方法,用于创建对象时初始化对象的状态。

使用new关键字创建对象

构造器特点:


1.和类名相同
2.没有返回值

public class Person {String name;public  Person() {this.name="John";}}

 


public class Test {public static void main(String[] args) {Person p = new Person();System.out.println(p.name);}
}

 


使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化
以及对类中构造器的调用。

一且定义了有参构造,无参就必须显示定义

创建对象内存分析:

 

 

创建对象时,内存分配主要涉及到两个方面:

栈内存和堆内存。

1. **栈内存(Stack Memory)**:
   - 在栈内存中,存储的是对象的引用(或指针)以及基本数据类型的值。
   - 当你声明一个对象变量时,比如 `MyClass obj;`,栈内存中会为该变量分配一块空间来存储对象的引用。
   - 如果是基本数据类型的变量,比如 `int x;`,栈内存中直接存储变量的值。

2. **堆内存(Heap Memory)**:
   - 在堆内存中,存储的是对象的实际数据。
   - 当你使用 `new` 关键字创建一个对象时,会在堆内存中分配一块空间来存储对象的数据,并返回对应的引用。
   - 对象的方法和成员变量都存储在堆内存中。

下面是一个简单的示例,展示了创建对象时内存的分配情况:


public class ObjectMemoryAnalysis {public static void main(String[] args) {// 声明对象变量,在栈内存中分配空间MyClass obj;// 创建对象,并在堆内存中分配空间,返回对象的引用,将引用赋给对象变量obj = new MyClass();// 对象的方法和成员变量都存储在堆内存中obj.setX(10);obj.setY("Hello");}
}class MyClass {private int x;private String y;public void setX(int x) {this.x = x;}public void setY(String y) {this.y = y;}
}

在这个示例中,`obj` 对象变量在栈内存中分配了空间,然后通过 `new` 关键字在堆内存中为 `MyClass` 对象分配了空间,并将对象的引用赋给了 `obj`。对象的方法和成员变量存储在堆内存中,通过对象的引用可以访问和操作对象的数据。

栈 stack:


1. 每个线程私有,线程间不能共享!
2. 局部变量放置栈中。
3. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!


堆 heap:


1. 放置new出来的对象!
2. 堆是一个不连续的内存空间,分配灵活,速度慢!


方法区(也是堆):


1. 被所有线程共享!
2. 用来存放程序中永远是不变或唯一的内容。(类代码信息、静态变量、字符串常量)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2+element医院安全(不良)事件报告管理系统源代码

目录 安全不良事件类型 源码技术栈 医院安全(不良)事件报告管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件…

测试环境搭建整套大数据系统(六:搭建sqoop)

一:下载安装包 https://archive.apache.org/dist/sqoop/ 二:解压修改配置。 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt cd /opt mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7修改环境变量 vi /etc/profile#SQOOP_HOME export SQOOP_…

nginx-------- 高性能的 Web服务端 (四)

一、高级配置 1 .1网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机…

【Android 性能优化:内存篇】——ExoPlayer 释放后内存没有恢复问题探索

背景 最近笔者承接项目的内存优化指标,在内存调研的过程中发现项目中视频播放结束后,内存没有恢复到播放前到水平。项目中用的 EXO 版本为2.19.1,并且笔者自己也写了个简单的 Demo,发现也是如此。虽然有一些偏门方法可以优化&…

4 buuctf解题

[CISCN 2019 初赛]Love Math1 打开题目 题目源码 <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("…

无人机的视频图传技术

在操控无人机时&#xff0c;视频图传技术显得尤为关键。通过这项技术&#xff0c;无人机的摄像头所捕捉的画面能实时回传至遥控器&#xff0c;使操作者全面掌握无人机的拍摄情况。同时&#xff0c;无人机图传技术也是衡量无人机性能的重要标准&#xff0c;它关乎飞行距离与时间…

【Vuforia+Unity】AR07-实现识别条码、二维码内容功能(Barcode Scanner)

Barcode Scanner in Unity | Vuforia Library官方教程&#xff0c;写的很详细&#xff0c;本教程主要参考对象&#xff01; 主要实现扫描生活中常见的二维码&#xff0c;然后弹出二维码链接&#xff0c;当然我们也可以再次回调自定义函数&#xff0c;弹出数字内容&#xff0c;…

编译GreatSQL with RocksDB引擎

GreatSQL里也能用上RocksDB引擎 1. 前言 RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎&#xff0c;特别适用于高度压缩和大容量的数据。以下是一些关键特点&#xff1a; 高性能&#xff1a; LSM 树结构使得RocksDB在写入密集型负载下表现…

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

看了很多调色教程&#xff0c;背了一堆调色参数&#xff0c;可最终还是调不出理想的效果。别再怀疑自己了&#xff0c;不是你的剪辑技术不行&#xff0c;而是剪辑软件没选对。只要掌握了最基本的调色原理&#xff0c;一款适合自己的视频剪辑软件是很容易出片的。 有关剪辑视频…

python实现维特比算法

对于维特比算法&#xff0c;首先想到的就是高通公司&#xff0c;对于现在的通信行业的两大巨头公司之一&#xff0c;高通公司的发家是由器创始人维特比发明了一种高效的通信解码技术&#xff0c;维特比算法。 对于维特比算法是什么&#xff0c;以一个例子来讲述什么是维特比算…

如何查看Linux中运行了哪些应用

在Linux中&#xff0c;有多种方法可以查看正在运行的应用程序。以下是一些常用的命令&#xff1a; ps 命令&#xff1a;ps 命令用于显示当前终端会话中运行的进程。要查看系统上运行的所有进程&#xff0c;可以使用 -e 或 -A 选项。例如&#xff1a; ps -e或 ps -A这将列出所有…

TiDB离线部署、Tiup部署TiDB

先做tidb准备工作&#xff1a; 部署 TiDB 前的环境检查操作&#xff1a;TiDB 环境与系统配置检查 | PingCAP 文档中心 1.查看数据盘 fdisk -l &#xff08;2,3&#xff09;本人的分区已经是 ext4 文件系统不用分区&#xff0c;具体官方文档的分区&#xff1a; 4.查看数据盘…

Python reversed函数

在Python编程中&#xff0c;reversed()函数是一个内置函数&#xff0c;用于反转序列对象的元素顺序。这个函数可以应用于列表、元组、字符串等可迭代对象&#xff0c;并返回一个反向迭代器&#xff0c;可以按照相反的顺序遍历序列中的元素。本文将深入探讨Python中的reversed()…

Vue学习之计算属性

模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。比如说&#xff0c;我们有这样一个包含嵌套数组的对象&#xff1a; const author reactive({name: John Doe,books: [Vue 2 - Advan…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题应用并查集的理论直接就可以解决&#xff1a;【算法与数据结构】回溯算法、贪心算法、动态规划、图…

时域系统到频域响应的直观解析及数学推导

课本里经常有已知系统时域的差分方程&#xff0c;求系统的频率响应这样的题&#xff0c;老师会讲怎么带公式进去解决&#xff0c;怎么查表解决&#xff0c;但我们总时无法直观地理解这两种转换的特殊关联在哪里&#xff0c;这篇文章以FIR滤波器为例&#xff0c;不仅列出了课本里…

【Docker】免费使用的腾讯云容器镜像服务

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 1、设置密码 2、登录实例&#xff08;sudo docker login xxxxxx&#xff09; 3、新建命名空间&#xff08;每个命名空…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数

Python实战&#xff1a;统计字符串中的英文字母、空格、数字及其他字符出现的个数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &…

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试&#xff08;1&#xff09;添加相关依赖&#xff08;2&#xff09;新建包并在报下创建测试类&#xff08;3&#xff09;亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来…