java(十一)数组

数组用来存放相同数据类型的数据,逻辑位置与物理位置都是连续的。

数组存放在堆里。

栈和堆:

栈:方法调用的时候使用栈,局部变量存放在栈里。

堆:动态的分配内存,new出来的。引用类型存放在堆里,在栈里存放引用,也就是地址,一般用16进制来表示地址:0x...。

基本类型和引用类型的区别:

基本类型:在栈中存放的是二进制位。

引用类型:引用类型其实是地址。跟C++中的指针不同,引用屏蔽了++和--。

                 引用变量是访问真实对象的根本方法。

                 如果想访问数组因素本身,就只能通过数组引用变量来访问。实际的数组对象存在在堆(heap)中(但是数组中                    的数值会存放在常量池中,其实在堆中还是存地址),如果引用该数组对象的数组引用变量是局部变量,就会被存                  在栈(stack)中。

使用数组:

  1. 声明  int[] arr; 此时这个arr并不是数组,而是一个引用,还不能使用。

  2. 创建(分配空间 默认初始化)  arr = new int[5]; 实质是二进制位的拷贝(对拷),返回数组的首地址。

  3. 初始化  静态初始化:只指定元素内容不指定数组长度。

动态初始化:只指定数组长度,元素动态填充。

遍历数组:

普通for循环

增强for循环,使用了也临时变量,一般不进行对数组元素的赋值。

数组内存回收:

当没有任何变量指向自己(堆内存中的数组对象)的时候,这个数组就会成为垃圾,等待垃圾回收机制回收。为了让一个垃圾回收机制回收自己,可以将数组赋值为null,这样就切断了指向数组的引用变量与实际数组之间的关系。

java 8 增强的工具类 Arrays

提供了一些静态方法可以直接操作数组

比如:String toString(type[] a):该方法将一个数组转换成一个字符串,多个元素之间以 "," 隔开。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java的内存机制

Java把内存划分成两种:一种是栈内存,另一种是堆内存。 Heap(堆)Stack(栈)JVM中的功能内存数据区内存指令区存储数据对象实例基本数据类型,指令代码,常量,对象的引用地址堆中存储数据堆内存用来存放由new创建的对象和数组。 保存对象实例,实际上是保存对象实例的属性值,属性的类型和

JavaScript的深拷贝和浅拷贝

一、数据类型数据分为基本数据类型(String,Number,Boolean,Null,Undefined,Symbol)和对象数据类型。、1.基本数据类型的特点:直接存储在栈(stack)中的数据2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据放在堆内存里。引用数据类型在栈中存储了指针,该指针指向堆中该实