JavaSE(三)

一维数组

整型一维数组为例:

  1. 申明:元素的数据类型【】 数组名;
int[] arry ;
  1. 初始化
    需要明确的:
    (1)确定数组的长度
    (2)确定数组的元素的值
    一般将申明和初始化合成一句:int[] arry={10,20,30};
  • 静态初始化
//数组名=new元素的数据类型[]{元素的值列表} ;
arry=new int[]{10,20,30,40};
  • 动态初始化
int array[] = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
  • 注意此下的方法是错误
int array[] = new int[5]{1,2,3,4,5}
  1. 数组遍历
    下标index的范围: [0,长度-1]
    下标index的范围: [0, scores. length-1]

一维数组的内存小析

  1. 数组的存储:
    (1)数组下标为什么从0开始?
    下标表示的是这个元素的位置距离首地址的偏移量
    (2)数组名中存储的是什么
    数组名中存储的是数组在堆中一整块区域的首地址
    (3)数组的元素如何存储
    在堆中,依次连续的存储的,当遇到数组名时,就可以找到数组的首地址,那么再根据偏移量(偏移首地址的单位)找元素
  2. 核心概念
    int[] array = {1,3,5, 7,9};
    其中的int[ ] 也是 一种数据类型,数组类型,它是一种引用数据类型
  • 引用,表示引用一个“对象”,也就是引用堆中的一块内存,Java程序是在JVM中运行,JVM中 的内存最最主要的两块区域:栈和堆。其中的栈就是存储我们的局部变量(现在见到的变量都是局部变量),而堆中存储的是对象(new出来的)
    在这里插入图片描述
  • 变量:本质上就是代表一块内存,new表示在堆中新建/申请一块新空间,用来存储“对象”
  • 进一步解析
class Test06_ ArraySave InMemory {
public static void main(String[] args) {
int[] array = new int[]{1,3,5,7,9};
//int[] array = {1,3,5, 7,9};
System. out . println (array) ;//打印数组名
//结果: [I@15db9742
//这个值是,数组对象的类型@对象的hashCode编码值
//其中[I,表示int[]类型.
//15db9742是这个数组对象的hashCode编码值,类似于每个人都有一一个身份证号
}

打印数组名,代码块中为例,结果是 [I@15db9742(数组对象的类型@对象的hashCode编码值)

二维数组和多维数组

二维数组的运用

  1. 如何声明一个二维数组?
    语法格式:
    元素的数据类型[ ][ ] 数组名;
  2. 如何初始化二维数组?
    初始化:
    (1)确定行数
    (2)确定每一行的列数
    (3)确定元素的值
  • 静态初始化
    二维数组名= new元素的数据类型[] []{{第一-行的值列表},{第二行的值列表}… {第n行的值列表}};
int[ ] [ ] scores ;
scores = new int[ ] [ ]{{67 ,89,45}, {90,99,88,100}
  • 动态初始化
int a [ ] [ ] = new int [3] [5];  
int b [ ] [ ] = new int [3] [ ];
b[0] = new int [2];
b[1] = new int [3];
b[2] = new int [5];
  1. 如何表示二维数组的行数?
    二维数组名. length
  2. 如何表示一行
    此时把二维数组看成一个一维数组,把一行看成一个元素
    二维数组名[行下标]
    行下标的范围: [0,二维数组总行数-1]
  3. 如何表示每一行的列数?即每一行元素的个数
    二维数组的一行,其实又是一个一-维数组
    二维数组名[行下标].length
  4. 如何表示某行某列的一个元素呢?
    二维数组名[行下标] [列下标]
    列下标的范围:[0, 该行的列数-1]
  5. 遍历二维数组
for(int i=0; i<二维数组名. length; 1++) {
	for(int j=0; j<二维数组名[i] .1ength; j++){
		System.out.print (二维数组名[i][j] +”") ;
	}
	System.out.println() ;
}

二维数组的内存存储原理

在这里插入图片描述原理简析:在栈区申请了二维数组,并在堆区申请了固定大小的内存,在堆区将每一行一维数组的首地址放在一起组成一个一维数组,就是二维数组的行数组,访问二维数组的时候,先根据数组名找到行数组的首地址,再根据具体的坐标进行偏移找到具体的行的首地址,再根据偏移量找到对应的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值