学习笔记:突出程序员基本功(一)数组与内存控制

C++内存管理学习笔记(3) /****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:wdzxl198@163.com    /*  转载请注明本文出处: *   http://blog.youkuaiyun.com/ 阅读详情

1.数组初始化

1.1 java语言是典型的静态语言,因此java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。java程序中的数组必须经过初始化才可以使用。java数组一旦初始化完成,该数组的长度就不可改变。

数组的初始化有以下两种方式:

静态初始化:初始化时由程序员显示指定每个数组元素的初始值,有系统决定数组长度。

动态初始化:初始化时程序员只指定数组长度,有系统为数组元素分配初始值。

初始化数组,系统指定初始值规则:

数组元素(byte,short,int,long)  -->元素默认值: 0

数组元素(float,double)  --> 元素默认值: 0.0

数组元素(char)  --> 元素默认值: \u0000

数组元素(boolean)  -->元素默认值: false

数组元素(类,接口,数组)  -->元素默认值: null

注意:不要同时使用静态初始化和动态初始化。也就是说,不要在警惕性数组初始化时,既指定数组的长度,也为每个数组 元素分配初始值。

1.2 java的数组变量时引用类型的变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中即可使用该数组变量。对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

1.3 基本类型数组的初始化

对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此基本数据类型数组初始化比较简单:程序直接先为数组分配内存空间,再将数组元素的值存入对应的内存里。

所有局部变量都是放在栈内存里保存的,不管其时基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈中;但引用类型的变量所引用的对象(包括数组,普通java对象)则总是存储在堆内存中。

1.4 引用类型的初始化

引用类型数组的数组元素依然时引用类型,因此数组元素里存储的还是引用,它指向另一个内存,这块内存里存储了该引用变量所引用的对象(包括数组和java对象)

2.使用数组

java语言不允许直接访问堆内存中的数据,因此无法直接访问堆内存中的数组对象,程序将通过数组引用变量来访问数组。

2.1 数组元素就是变量

只要在已有数据类型之后增加方括号,就能产生要给新的数组类型。(如:int-->int[],String-->String[],Person-->Person[])

2.2 多维数组

前面已经指出:只要在已有数据类型之后增加方括号,就会产生要给新的数组类型。

类型int  -->  一维数组 int[]  -->  二维数组 int[][]  --> 三维数组 int[][][]

 

C++数组从入门到精通:定义、内存、越界与vector对比 数组是编程语言中一种基础且核心的数据结构,它通过在内存中分配一块连续的存储空间,用于存放一系列相同类型的数据元素。其底层原理在于利用连续内存地址和索引偏移实现O(1)时间复杂度的随机访问,这为高效的数据存取操作提供了基础。在C++中,数组的这种特性使其成为理解内存布局、指针运算和性能优化的关键切入点。然而,静态数组存在固定大小、缺乏边界检查等局限性,容易引发数组越界访问和栈溢出等常见问题。因此,在现代C++工程实践中,标准库容器std::vector因其动态扩容、自动内存管理和内置安全边界检查等优势,成为更 阅读详情

相关推荐

CUDA中的数组逆序实现:全局内存与共享内存对比分析

本文还有配套的精品资源,点击获取 简介:CUDA编程中,数组逆序是一个基本操作,通常使用全局内存或共享内存实现。全局内存版简单但可能受限于内存带宽,导致性能下降;共享内存版虽然复杂,但能显著减少全局内存访问,提高效率。本文将比较这两种实现方式的性能差异,并提供CUDA C++的实现示例和性能评估方法。 1. CUDA编程中的全局内存和共享内存概念 在GPU架...

weixin_34163588的博客 1543

程序员基本功01数组与内存控制

以下的答案为我自己的读书心得(捏造的答案),如有童鞋不忍直视,还请不吝赐教 1、JAVA数组基本语法   int[] a  2、JAVA数组的静态特性 当数组被初始化后,数组的长度是不可改变的  3、JAVA数组的内存分配机制  栈区保存局部变量,堆内存保存对象。JAVA数组是静态的,一旦初始化完成,数组内存空间分配即结束,程序只能改变数组元素的值,无法改变数组的长度。 4、初始化J...

NEVERGUVEIP的博客 265

从零实现反激式电源仿真:LTspice高级应用实例

深入解析反激式开关电源的建模与仿真过程,利用LTspice实现从零搭建电路,精准验证电路仿真效果,提升电源设计效率与可靠性。

weixin_36149538的博客 1894

JAVA程序员基本功之数组与内存控制

最近准备重过一遍JAVA基础,翻了翻李刚老师的《突破java程序员的16课》,借此机会和启发总结一下JAVA中的容易忽视的知识点。 数组初始化       JAVA是典型的静态语言,因此Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值。      JAV

江湖 624

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

瑞芯微Android固件修改实战:从解包到root提权完整流程(附工具包)

本文详细解析了瑞芯微Android固件深度定制全流程,涵盖从固件包解包、系统镜像修改到植入root提权与分区调整的实战步骤。通过工具链操作与原理剖析,指导开发者安全实现系统精简、权限获取及存储扩容,最终完成固件重新打包与刷机验证,适用于追求设备完全控制权的技术爱好者。

ujm56789012的博客 697

(一)数组与内存控制

一.数组与内存控制 1.1数组初始化 1.1.1Java数组是静态的 数组初始化有两种方式: 1.静态初始化 初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度 2.动态初始化 初始化时程序员指定数组长度,由系统为数组元素分配初始值 Java数组是静态的,一旦为数组初始化完成,数组元素内存空间分配立即结束,程序只能改变数组元素的值,而无法改变数组长度 Java的数组变量是一种引用类型...

weixin_41336451的博客 191

基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计

本文介绍了基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计。该系统集成了INA219传感器和OLED显示屏,通过蓝牙实现无线数据传输和远程控制,适用于智能家居能耗监控和工业设备管理,具有成本低、精度高、功耗优化等优点。

qsc901234的博客 203

程序员的基本功之数组与内存控制

1.数组初始化 Java的数组是静态的,既数组一旦初始化之后,该数组的长度就不可变,Java的数组需要初始化才能使用 数组的初始化就是为数组对象在堆内存中分配一段数组长度的连续的内存空间,并设定初始值(注意并不是数组变量初始化,而是数组对象) 初始化的方式有两种:   1)静态初始化:程序员显示的指定每个数组元素的初始值,并由系统决定数组的长度   2)动态初始化:初始化时只...

weixin_30294709的博客 120

【2025软考高级架构师】基础知识部分——6、软件架构设计

(1)架构是对系统的抽象(2)架构由多个结构组成(3)任何软件都存在架构(4)元素及其行为的集合构成架构的内容(5)架构具有“基础”性(6)架构隐含有“决策”

qq837993702的博客 1万+

EtherCAT主站SOEM -- 1 -- SOEM之ethercattype.h文件分析

“ethercattype.h” 文件用于支持 EtherCAT 网络通信,提供了各种类型定义和宏,以便开发者更轻松地开发 EtherCAT 相关应用程序。这些定义包括数据类型、命令类型、状态类型和错误类型,以支持 EtherCAT 通信。根据具体应用需求,还可以调整一些超时和帧长度设置。这些定义用于处理函数调用的结果,如 EC_NOFRAME(没有帧返回)、EC_ERROR(一般错误)、EC_TIMEOUT(请求超时)等。这些定义用于处理 EtherCAT 命令,例如 EC_CMD_APRD(自动递增读取

常驻客栈的博客--嵌入式EtherCAT 2714

第1课—数组与内存控制

文章目录引言1.1 数组初始化1.1.1 Java数组是静态的程序清单: codes\01\1.1\ArrayTest.java分析 引言 JAVA数组并不是什么很难的知识,如果单从用法的角度来看,数组的用法并不难,只是很多程序员虽然一直使用JAVA数组,但他们往往对JAVA数组的内存分配把握并不准确。本章正是为了弥补程序员的这部分基本功而做的深入探讨 本课将会深入探讨JAVA数组的静态特征。...

2711871311的博客 267

基于Python的电商平台商品信息爬取与价格监控系统设计与实现

本文详细介绍了一个基于Python的电商平台商品信息爬取与价格监控系统的设计与实现。系统采用最新的Python爬虫技术栈,包括Scrapy框架、Selenium自动化测试工具、BeautifulSoup解析库等,实现了对主流电商平台商品信息的自动化采集、存储、分析和可视化展示。文章从系统架构设计、关键技术实现、核心代码解析等方面进行了全面阐述,并提供了完整的代码实现。该系统不仅适用于毕业设计,也可作为商业价格监控系统的原型。关键词:Python爬虫;电商数据采集;价格监控;Scrapy;Selenium;

2201_76125261的博客 963

java之数组与内存控制

使用java数组之前必须先对数组对象进行初始化。当数组的所有元素都被分配了合适的内存空间,并指定了初始值时, 数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。从用法角度来看,数组元素相当于普通变量, 程序既可以把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素。 1.1数组初始化 数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的

fancy 795

推理引擎终极对决:TensorRT vs ONNX Runtime,YOLOv8速度差30%的核心原因与实操指南

若你使用NVIDIA GPU,且追求极致速度和低延迟,TensorRT是唯一选择,尤其是边缘设备和实时场景;若你需要跨硬件部署、快速验证原型,或预算有限(无需NVIDIA GPU),ONNX Runtime是性价比之王;对于YOLOv8这类检测模型,TensorRT的FP16/INT8量化是“免费的速度提升”,建议优先采用。最后提醒:推理引擎的优化是“细节决定成败”——同样的引擎,不同的预处理方式、显存配置、批大小,都会导致10%-20%的性能差异。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1026

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java 数组与内存控制-解惑篇

注:内容摘取《疯狂java》 问题引出: 在java中,声明一个数组的过程中,是如果分配内存的。 “em… …” 那,Java数组的初始化一共有几种方式,你能说一说吗? “em… …” 那你知道基本类型数组 和 引用类型数组之间,在初始化时的内存分配机制有什么区别吗? “em… …” 笔者希望看过问题的小伙伴先在评论区留下你的 答案! Java语言是典型的静态语言,因此Jav...

碌无为的博客 268

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

疯狂java之数组与内存控制

使用java数组之前必须先对数组对象进行初始化。当数组的所有元素都被分配了合适的内存空间,并指定了初始值时, 数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。从用法角度来看,数组元素相当于普通变量, 程序既可以把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素。 1.1数组初始化 数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考

itmyhome的专栏 3389

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java基础(一) 数组的内存控制

文章目录1 数组初始化1.1 数组是静态的1.2 是谁需要初始化?2 使用数组     当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。 1 数组初始化 1.1 数组是静态的     Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。     Java的数组是静态的,即当数组被初始化之后,该数组的长度...

u012133048的博客 237

数组和内存控制

数组与内存控制 使用Java数据之前必须先对数组对象进行初始化。当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。从用法角度来看,数组元素相当于普通变量,程序既可以把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素。(注意数组变量、数组对象、数组元素的区别) 1.1 数组初始化 如果程序需要多个类型相同的变

Leaderman_IT的专栏 1451

Java程序员基本功----数组

Java程序员基本功---数组与内存控制 Java数组是一组具有相同类型值的集合,是Java中的一种引用类型,要想使用Java中的数组,该数组必须经过初始化,数组一旦经过初始化,其长度将不可改变,数组中的每个值将被赋予初始值。 Java数组初始化分为静态初始化和动态初始化。 静态初始化:由程序员显示的指定数组中元素的初始值,由系统决定数组的长度 int[] a

Tibib的专栏 1422

1 数组与内存控制

Java 数组的静态特性 Java 数组的内存分配机制 初始化 Java 数组的两种方式 初始化基本类型数组的内存分配 初始化引用类型数组的内存分配

zhouxukun123的专栏 350

怎么判断数组在内存中所占字节数_@程序员,你真的了解内存吗?

我们都知道,计算机是处理数据的设备,而数据的主要存储位置就是磁盘和内存,并且对于程序员来讲,CPU 和内存是我们必须了解的两个物理结构,它是你通向高阶程序员很重要的桥梁,那么本篇文章我们就来介绍一下基本的内存知识。01.什么是内存内存(Memory)是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为主存,...

weixin_39953236的博客 2914

Java数组初始化与内存控制

一、Java数组是静态的 Java是典型的静态语言,Java数组自然也是静态的,即当数组被初始化后,数组的长度是不可变的; 二、何谓数组初始化 所谓数组初始化,就是在堆内存中为数组对象分配一块连续的内存空间,并为每个数组元素指定初始值。 三、数组初始化方式 有两种方式: 1、静态初始化:由程序员显式指定每个数组元素的初始值,由系统确定数组大小; 2、动态初始化:由程序

Leeon的博客 1163

1. Java数组与内存控制

一、Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值。       Java基本类型数组的两种初始化方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。 动态初始化:初始化时程序员只指定数组长

jiutianhe的专栏 618

程序员需要了解的硬核知识之内存

我们都知道,计算机是处理数据的设备,而数据的主要存储位置就是磁盘和内存,并且对于程序员来讲,CPU 和内存是我们必须了解的两个物理结构,它是你通向高阶程序员很重要的桥梁,那么本篇文章我们就来介绍一下基本的内存知识。 什么是内存 内存(Memory)是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为主存,其...

程序员cxuan的个人主页 9165

No.1 数组与内存控制

1.动、静态初始化(数组);初始化包括:①分配内存②赋初始值 何为动、何为静,站在程序(系统)的角度来看,“动”指的是系统动态的赋初始值(先赋默认初始值,后面程序若有显示赋值是在默认值上面进行再赋值)(程序员指定数组长度);“静”指的是不由系统来赋初始值(系统指定长度),也就是由程序员显示赋初始值 程序员角度上:动——程序员只指定长度,不指定初始值;静——程序员不指定长度,指定初...

124
上一篇: 上传第三方sdk到私服
下一篇: 学习笔记:突出程序员基本功(二)对象与内存控制
夜未眠shm
博客等级 码龄14年 15粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值