第二天Java基础下午(数组/内存图)

Java基础_数组基础之数组的使用 一.数组的概述 1.数组的理解: 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 2.数组的相关概念: 数组名 元素 角标,下标,索引 数组的长度,元素的个数 3.数组的特点: 数组是有序排列的。 数组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型。 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是 这块连续空间的首地址。 数组的长度一旦确定,就不能修改。 4.数组的分类: ① 阅读详情

1.创建数组各种类型默认的值

1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)

2.Java内存5个部分

1.栈(Stack):存放的都是方法当中的局部变量。方法一定再栈当中运行,方法的参数和内部的变量都是局部变量,一旦超出作用域立即从栈中消失。
2.堆(Heap):new出来的东西都是在堆中,堆中的数据都是有一个16进制的地址值。且数据都有默认值:
1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)
3.方法区域(Method Area)储存.class相关信息,包括方法信息。
4.本地方法栈:与操作系统相关
5.寄存器:与cpu相关

3.一个数组在内存中的图

数组内存

4.当两个引用指向同一个数组时,两个引用的操作都生效

public static void main(String[] args) {
       int a[] = new int[3];
       a[1] = 1;
       a[2] = 2;
       System.out.println(a[1]+":"+a[2]);
        System.out.println("============");
       int b[] = a;//这句话说明a[]b[]的栈内存中地址是相同的
       b[1] = 10;
       b[2] = 20;//其中b[]对数组的操作,同样影响到a[]
       System.out.println(b[1]+":"+b[2]);
        System.out.println("============");
        System.out.println(a[1]+":"+a[2]);
    }

结果为

1:2
============
10:20
============
10:20

4.数组中需要注意的事情

1)数组的长度是不可变的
2)小练习数组反转

//1.需要指针分别从数组两端往中间走min、max
        //2.当min==max时,或min>max时不再进行交换
        //3.对称的值进行交换
        int temp = 0;
        for (int min = 0,max = a.length-1;min<max;min++,max--){
            temp = a[min];
            a[min] = a[max];
            a[max] = temp;
        }

5.一个对象的内存图

在这里插入图片描述

6.两个对象的内存图

在这里插入图片描述

7.两个引用指向一个对象的内存

在这里插入图片描述

数组安全编程:从内存越界到安全实践,详解变长数组风险与替代方案 数组作为计算机科学中最基础的数据结构之一,本质是一段连续的内存空间,用于存储相同类型元素的集合。其核心原理在于通过索引直接访问内存地址,实现O(1)时间复杂度的元素存取。理解数组的内存布局(栈、堆、静态存储区)是安全编程的基石,因为任何越界访问都可能破坏相邻内存区域,导致数据污染、程序崩溃甚至安全漏洞。在工程实践中,数组安全直接关系到系统稳定性和安全性,特别是在处理用户输入、网络数据等不可信源时。常见应用场景包括缓冲区管理、字符串处理、图像像素操作等。本文聚焦变长数组(VLA)在实际开发中的风险,通过真实线 阅读详情

相关推荐

Java重启式随机游走代码(Random Walk with Restart,RWR)

java代码的重启式随机游走代码,运行在Eclipse平台上,转自github,也可以自行下载,可运行,有Demo文件输入

数组咖啡馆的下午茶

一.数组—引用数据类型<堆> 自恋的老司机说有点难,所以我的小可爱们要认真仔细的学哦! ok ,那就一起来看一下我们今天要学一些什么 按照惯例,我们一起来看一下本章目标: 理解数组的作用 掌握数组的定义 掌握数组的基本使用 掌握数组的常用操作:求:最大/小值、排序等。 1.理解数组的作用 什么是数组? 有限个相同类型的变量所组成的一个集合,数组中的每个变量可以成为一个元...

d12111789789789的博客 222

告别‘线束丛林’:手把手拆解车身域控制器(BCM/PEPS/网关)的硬件选型与PCB布局要点

本文深入解析车身域控制器的硬件选型与PCB布局要点,涵盖主控MCU选择、通信接口设计、电源架构优化及EMC设计等关键环节。通过实战案例分享,帮助工程师解决高密度集成带来的电源完整性、热管理和信号隔离挑战,实现更稳定高效的汽车电子系统设计。

weixin_42567279的博客 396

Java笔记3.1——Java基础之数组

Java基础之数组

qq_61524266的博客 441

【杰理AC696X】ADKEY复用指示灯不定时出现灯不亮或按键失灵的问题

测试SDK版本:《ac696n_soundbox_sdk_v1.5.0-20211217》ADKEY复用指示灯的做法多用于蓝牙小音箱,IC引脚越来越少,复用也就用的越多了,不过,在使用前应评估好功能,因为复用的做法,肯定会牺牲点东西的,如果体验感啥的。 比如这个图,(V-)按键按下时,LED是会一直导通发光的,按不同阻值的按键还有亮度不一致的问题,这样的问题有的客户是不接受的,这就要另寻他法了。某天调好案子,放在一边测试时,发现指示灯不亮了,按键也不起作用,想起之前AC692系列也有类似的问题,很快就定位到

xx842678的博客 1656

【吐血整理-历时两个月,长达万字】FDTD Solutions学习笔记

原教学视频来自于Ansys-Lumerical官方的FDTD100,所看视频来自B站大佬UP主 【Nestor_呐等】 的幸苦翻译,本文内容粘贴自我个人在学习FDTD100时,通过字幕和一些个人理解总结的一份word。整理不易,强烈建议收藏!...

weixin_45719141的博客 10万+

软考下午c语言真题,软考程序员下午试题分析和备考建议

软考程序员下午试题分析和备考建议发布时间:2017-08-02软考程序员下午试题分析和备考建议程序员下午科目主要考查程序设计能力。从XX年开始,vb程序设计题目开始减少,XX年的题目中取消了对vb程序设计题目。目前的考核内容和分值分布情况如下所示。程序员下午试题考核内容分值分布情况题目编号 考核内容 分值试题一 算法流程 15试题二 c语言程序设计 15试题三 ...

weixin_39913422的博客 1002

华为OD面试八股真题 - 操作系统 - 1

华为OD技术面,操作系统相关八股真题提供详细解答,这篇博客主要涉及于进程和线程相关知识点

qq_45776114的博客 1644

java_数组

文章目录一、数组概述二、一维数组的使用1、数组初始化2、常用指令3、数组默认初始化的值和数组的内存解析 一、数组概述 二、一维数组的使用 1、数组初始化 分为静态初始化和动态初始化 静态初始化:数组初始化和元素赋值操作同时进行 动态初始化:数组初始化和元素赋值操作分开进行 数组一旦初始化完成,其长度是确定的 public class ArrayTest { public static void main(String[] args) { //一维数组声明和初始化 int[] ids; //声

qq_34229228的博客 402

【git】git: ‘interpret-trailers’ is not a git command. See ‘git --help’

cents 7.6系统. yum源安装git最新版本是1.8.3 报错: git: 'interpret-trailers' is not a git command. See 'git --help'. cannot insert change-id line in .git/COMMIT_EDITMSG 解决: git add xxx git commit -m "xxx" 然后修改 vim .git/hooks/commit-msg #if test -n "${reviewurl}" ; th

machh的专栏 4759

【归因】MATLAB实现最佳指纹法(待更新)

简述用于归因分析的最佳指纹法,及其MATLAB实现。

WW、forever的博客 4286

Java数组详解,冒泡法及稀疏数组

数组 1.概念 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 1.首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] array; // 首选的方法 dataType array[]; // 效果相同,但不是首选方法 2.Jav...

EdwinD的博客 301

【matlab】基于 Simulink 的空调恒温控制系统仿真建模

本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。

走向CTO的路上... 920

1-23下午方法和数组

1:方法(掌握) (1)方法:就是完成特定功能的代码块。 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。 (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体语句; return 返回值; } 修饰符:目前就用 public static。后面再详细讲解其他修饰符 返回值类型:就是功能结果的数据类型 方

让代码飞~~~~~ 650

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java基础】Java语言概述、基本语法、数组、面向对象(上)

【Java基础】Java语言概述、基本语法、数组、面向对象(上)

qq_48687155的博客 477

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

关于数组输入--类似于C那种动态分配数组内存的JAVA解决

C语言是通过动态分配内存解决动态数组的。但是java中我们初始化数组必须要指定数组长度或者是指定数组的值。 这个时候有一种做法就是给数组分配一个很大的长度的数组空间,显然这样做是类似于C的解决之道。其实还有更优解。 java中的集合框架啊,其中的List集合更是解决这个问题的不二法门,我们可以先new一个ArrayList,我们把我们最不擅长的动态分配内存这个点交给框架去做就是。再说List转

WantNo1QAQ的博客 494

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数组 (Array)

1 数组的概念 1.1 数组的定义 数组的定义 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先 后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标) 来访问它们。数组的四个基本特点: 1.长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 2.其元素的类型必须是相同类型,不允许出现混合类型。 3.数组类型可以是任何数据类型,包括基本类型和引用类型。 4.数组变量属于引用类型,数组也是对象。 建议: 数组变量属于引用类型,数组也是对象,数组中的

weixin_40055163的博客 3917

java怎样定义动态数组_java如何手写动态数组?实例代码展示

自从21世纪以来。科学技术水平高速发展,这也促使了新兴技术的不断发展与壮大。越来越多的人开始投入到新技术的学习当中来。其中java的学习则是更多人的选择。今天就为大家介绍一下java如何手写动态数组,并用实际代码展示。一起来看看吧。首先说一下注意事项。1.在定义增量时,不要定义成一个固定的值,每次扩充一定比例。2.比例不是越大越好,也要考虑到内存问题,所以取个合适的值就行。3. 在Array中的s...

weixin_35639230的博客 1356

0716下午 Java介绍

1、Java版本 (1)Java se winform C/S (2)Java EE b/s (3)java 2me 移动端 塞班 (4)android se+AndroidSDK (5)open SDK 2、Java特点 (1)开源(通用性增加、规范传播) (2)跨系统语言(解释器,虚拟机) (3)框架...

qq_39468705的博客 192

java学习笔记29:数组的概念和特点、数组的声明、内存状态、初始化和遍历、数组越界异常、for-each增强for循环

一、数组的概念和特点 1、数组的定义   数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。   注:数组是有序的。(根据索引下标排序,从零开始) 2、数组的三个基本特点: 1. 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 2. 其元素必须是相同类型,不允...

任性的生鱼片 的博客 592

Java学习笔记——数组

个人学习笔记

m0_66804107的博客 306

JAVA数组的详解

package com.test.array; import java.util.Scanner; /** * * @author Json * @date 2020年7月13日下午11:07:54 * * * 数组的长度一旦确定 则不能被修改 * 数组的分类 * 按照维数分组 一维数组 二维数组 。。。 * 按照数组元素类型分组 基本数据类型元素数组 引用数据类型元素数组 * 一维数组的使用 * ...

Json的知识梦工厂 246

Java I/O 扩展

Java I/O 扩展标签(空格分隔): Java基础NIO Java 的NIO(新IO)和传统的IO有着相同的目的: 输入 输出 .但是NIO使用了不同的方式来处理IO,NIO利用内存映射文件(此处文件的含义可以参考Unix的名言一切皆文件)来处理IO, NIO将文件或文件的一段区域映射到内存中(类似于操作系统的虚拟内存),这样就可以像访问内存一样来访问文件了. Channel 和 Buffe

菜鸟-翡青 9914

Java IO之字节数组流

字节数组流: 基于内存操作,内部维护着一个字节数组,我们可以利用流的读取机制来处理字符串 无需关闭 无文件无关,借鉴流的一个一个字节读取的机制,来操作字符串 ByteArrayInputStream 包含一个内部缓冲区该缓冲区包含从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节。关闭ByteArrayInputStream无效。此类中的方法在关闭此流后仍可被调...

LemonSnm的博客 412

java4月18数组

一  什么是数组 1.数组是存储在一个连续的内存块中的元素集合。 2.数组中的每个元素必须是相同的数据类型,并且通过索引进行区分,数组中的第一个元素的索引为0。 二  数组的特点 1.同一数据类型。2.连续存放。3.数组大小一旦确定,不能更改。 三  引用数组:java中有九种数据类型;八种基础数据类型中每一种是一种数据类型,引用类型的数组类型。sums和temps数组就

xiongyizhou的博客 212
上一篇: 第二天Java基础下午(idea)
下一篇: 第二天Java进阶晚上(常用的API)
RestartJava
博客等级 码龄7年 1粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值