首页 > 系统相关 >JAVA数组和内存

JAVA数组和内存

时间:2024-03-24 11:00:13浏览次数:25  
标签:初始化 arr JAVA 数据类型 内存 数组 new

目录

数组的概述和静态初始化

介绍

定义

数组的初始化

静态初始化

动态初始化

区别

索引

数组遍历

常见问题

数组练习

求最值

交换数据

打乱数据

数组的内存图!

两个数组指向同一个空间的内存图

总结


数组的概述和静态初始化

介绍

1、数组是一种容器,用来存放同种数据类型的多个值

2、数组容器在存储数据的时候,需要结合隐式转换考虑

3,例如:int类型的数组容器(boolean  byte short char int double

定义

数据类型 【】数组名

数据类型  数组名【】

数组的初始化

静态初始化

初始化就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。

方式:静态初始化:

格式:数据类型【】数组名=new 数据类型【】{元素1,元素2,元素3.....}

例子: double [] array1=new double [] {1.1,23.4,5.6};

简写 double [] array1= {1.1,23.4,5.6};

注意:数组的长度一旦确定就不能再改变数组的大小了

数组地址:数组在内存中的位置

动态初始化

定义:初始化时只指定数组长度,由系统为数组分配数组值。

例子:数据类型【】数组名=new 数据类型 【数组长度】;

int []arr=new int[3];

区别

动态初始化:只明确元素个数,不明确具体数值,

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度

索引

把数据存储到数组当中:

一旦覆盖之后,原来的数据就不存在了

数组遍历

数组遍历:将数组中的元素取出来,取出来之后可以(打印。求和。判断)

注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!

扩展:自动的快速生成数组的遍历方式     idea提供的 数字名.for i

例题

一个循环尽量只做一件事情

常见问题

最小索引:0

最大索引:数组的长度-1

索引越界异常:避免:索引的范围

数组练习

求最值

初始化值必须是数组内的任何一个值

为了提高效率,减少循环比较的次数,可以把循环开始条件写为1

交换数据

打乱数据

数组的内存图!

java内存分配:

栈:方法运行时使用的内存,比如main()方法,进入方法栈中执行

堆:存储对象或者数组,new来创建的,都存储在堆内存   new创建newnewnewnew,如果简化的数组定义时没有new关键字,那么数组元素也是存放在堆里边的

方法区:存储可以运行的class文件

本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关

寄存器:给CPU使用,和我们开发无关

(见黑马程序员上部62)

例子:int []arr={1,2,3};

int []arr是存放在栈里边的,然后arr对应的是堆里边的地址,多以打印arr时,打印的是地址而不是数字,{1,2,3}是存放在堆里边的,这个数组只是简化了定义,而内存和有无new没有任何变化。

arr[0]=11;则是把11赋给arr[0],改变数组中堆里边的值。

总结:

1、只要是new出来的一定是堆里面开辟了一个小空间

2、如果new了很多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据

3、main方法进栈

两个数组指向同一个空间的内存图

总结

1、深刻理解数组的内存区的分部和存储

2、理解栈和堆的区别

标签:初始化,arr,JAVA,数据类型,内存,数组,new
From: https://blog.csdn.net/m0_75049881/article/details/136965407

相关文章

  • Java Web项目—餐饮管理系统【last day】-Niginx前后端分离
    文章目录Nginx概述Nginx介绍Nginx下载和安装Nginx的目录结构启动和停止nginx.confNginx应用部署静态资源反向代理配置反向代理负载均衡配置负载均衡前后端分离开发Nginx概述Nginx介绍Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理......
  • Java Web项目—餐饮管理系统Day14-MySQL主从复制与读写分离
    文章目录读写分离的作用主从复制(Master-SlaveReplication)如何实现主从复制MySQL配置主库配置从库配置SpringBootsupport读写分离是指将数据库的读操作和写操作分离到不同的数据库服务器上,以提高数据库的性能和可用性。在高并发的场景下,读操作通常占据了大部分......
  • 08-JavaScript事件监听
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JS-事件-事件绑定</title></head><body><!--点击按钮,在控制台打印相关信息--><inputtype="button"......
  • `ij_javascript_spaces_within_imports = true` 这个设置表示在 JavaScript 代码的
    #http://editorconfig.orgroot=true[*]#表示所有文件适用charset=utf-8#设置文件字符集为utf-8indent_style=tab#缩进风格(tab|space)indent_size=4#缩进大小end_of_line=lf#控制换行类型(lf|cr|crlf)trim_trailing_whitespace=true#去除......
  • ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码mav
    一、源码特点 idea开发SSM学员信息管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSPjava编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。前段主要技术bootstrap.cssjquery后端主要......
  • 黑马Java0基础课程学习记录第五天(p49-p53)-3.23
    day05-循环高级训练+leecode练习1.无限循环2.条件控制语句breakcontinuecontinue:不能单独存在的,只能存在于循环当中。表示:跳过本次循环,继续执行下次循环。eg:break:不能单独存在的。可以用在switch和循环中,表示结束,跳出的意思。eg:练习1:逢7过游戏:从1-100打印......
  • Java零基础-数组
    哈喽,各位小伙伴们,你们好呀,我是喵手。  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把......
  • Java零基础-数组:异常处理和错误处理
    哈喽,各位小伙伴们,你们好呀,我是喵手。  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把......
  • 当Java 22遇到 SpringBoot 3.3.0!
    工程|JOSHLONG|0条评论Java22发布快乐!Java22是一个重大的进步,是一个值得升级版本。有一些重大的最终发布功能,如ProjectPanama及一系列更优秀的预览功能。我不可能覆盖它们全部,但我确实想谈谈我最喜爱的一些。我们将会涉及到许多功能。如果你想在家里跟着做,代码在这......
  • 一文弄懂Javascript中的深拷贝和浅拷贝
    目录一文弄懂Javascript深拷贝与浅拷贝1Javascript数据存储规则2浅拷贝3部分深拷贝3.1Object.assign3.2slice()3.3concat()3.4拓展运算符4完全深拷贝4.1_.cloneDeep()4.2结构化拷贝4.3json.stringify()4.4循环递归4.5jQuery.extend()5总结一文弄懂J......