Java|Java基础——数组
admin
2023-08-16 02:05:29
0次


文章目录

  • 含义
  • 元数据
  • 内存空间
  • 索引、数组大小
  • 创建
    • 先声明后初始化
    • 声明并初始化
    • arr[ ]和arr[ ]{}的区别
  • 打印数组
  • 二维数组

含义 一组类型相同的变量集合,数组属于引用数组类型,所以使用前必须实例化(开辟空间)。
元数据 跟标准Java对象差不多,但它多了一个元数据,用来表示数组大小;
数组最大尺寸是2^32 = 2147483648,但会拿8字节来存储长度等元数据,所以数组大小是Integer.MAX_VALUE-8,
元数据包括:
Class:描述对象类型的类信息的指针。
Flag:描述对象状态的标志集合,包括对象散列码、形状(对象是否是数组)。
Lock:对象同步信息(对象当前是否同步)。
Size:数组大小。
内存空间 简单复习一下,
堆:存储Java对象和数组,动态分配内存空间(因此存取慢)。
栈:存储基本数据类型和对象应用。(数据大小和作用范围明确,存取快,仅次于寄存器,但不灵活。)
Java|Java基础——数组
文章图片

声明了一个名为arr的int类型数组,并给数组赋值[6,3,5],
索引、数组大小 索引是从0开始的。
获取数组长度要通过:
int len = arr.length;

如果试图访问范围以外的元素,会抛出异常:
java.lang.ArrayIndexOutOfBoundsException

创建 数组一旦初始化后,其所占内存空间、数组长度都是不可变的。
先声明后初始化 声明了一个数组,并开辟了相应大小的空间。
这种方式创建的数组,其初始化又称为动态初始化,因为在声明语句中,系统为数组元素分配了默认值。
int[] arr = new int[5]; // 也是new int[5]{}; arr[0]=3; arr[1]=9; System.out.println(Arrays.toString(arr)); String[] arrS = new String[5]; arrS[0]="h"; arrS[1]="e"; System.out.println(Arrays.toString(arrS));

我声明了一个int型数组跟一个String类型的数组,注意到并没有全部初始化,那么默认值会是什么呢:
[3, 9, 0, 0, 0] [h, e, null, null, null]

我们看到打印结果,int的默认是0,String的默认是null,那么就是说默认初始化值跟数组元素的数据类型有关。
声明并初始化 这种方式的初始化又称为静态初始化,因为程序员显式的给每个元素指定初始值了,系统根据元素个数来确定数组长度。
int[] a = new int[]{5, 4, 6, 9, 3, 1, 2, 8, 7, 9, 5};

arr[ ]和arr[ ]{}的区别 我们试着打印一下,两者都像使用默认值来初始化,但实际是什么样的呢?
int[] arr = new int[5]; int[] test = new int[]{};

输出:
[0, 0, 0, 0, 0] []

嗯?怎么区别还挺大,其实没什么神奇或者特别之处,第一个好理解,创建了大小为5的,元素类型是int的数组,默认值都是0,这没问题。
那么第二个呢?
我们看到它没有指定数组大小,因为这种写法,其实就是程序员自己指定数组元素,数组长度则是系统根据数组大小来定的,但我们看到了,没给数组指定有意义的元素,所以打印出来数组不是null,但是也没有东西,而且长度是0。
打印数组 1、
for(int i = 0; i < a.length; i++){ System.out.print(a[i] + ","); }

2、
for(int i : a){ System.out.print(i + ","); }

3、
System.out.println(Arrays.toString(a));

二维数组 不常用,简单说下,其实跟一维数组很多东西都相似的。
int[][] arr = new int[5][3]; // 5行 3列 int[][] arr1 = new int[][]{{5}, {7, 9}, {0, 6, 8}}; // 3行 3列,但不完全是

0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
【Java|Java基础——数组】5
7 9
0 6 8
如果尝试访问arr1[0][1]会抛出异常,提示下标越界。

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...