Java学习笔记系列-基础篇-数组

Java学习笔记

Java学习笔记是一个持续更新的系列,工作多年,抽个空对自身知识做一个梳理和总结归纳,温故而知新,同时也希望能帮助到更多正在学习Java 的同学们。

本系列目录

入门篇

基础篇


数组

数组是储存数据类型相同的变量的集合,属于引用数据类型,自身也是堆中的一个对象。

声明方式

在Java中声明数组有两种方式,一是先声明数组长度,后赋值(动态初始化),二是声明数组时直接赋值,无需声明长度(静态初始化)。

实际操作时有三种方式:

  1. type[] 变量名 = new type[数组中元素的个数];
    比如:

    int[] a = new int[10];
    

    数组名,也即引用a,指向数组元素的首地址。
    推荐此种方式,更能表明数组类型

  2. type 变量名[] = new type[数组中元素的个数];
    如:

    int a[] = new int[10];
    

    这种方式和C语言一样

  3. 定义时直接初始化
    type[] 变量名 = new type[]{逗号分隔的初始化值};
    其中红色部分可省略,所以又有两种:

    int[] a = {
         1,2,3,4};
    int[] a = new int[]{
         1,2,3,4};
    

    其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

内存分配

Java 语言是典型的静态语言, Java 数组也是静态的。

当数组被初始化之后,该数组所占的内存空间、数组长度都是不可变的。

由于数组属于引用对象,它从声明之后,就会保存在堆内存中,栈中只会保存指向堆中数组的地址。

例如

int a[] = new int[4];
a[0]=1;
a[1]=3;

在这里插入图片描述
Java 数组的变量对象并不是数组本身,它只是指向堆内存中的地址,它保存在栈中,上图左边为栈右边为堆。

基础运用

数组长度

Java中的每个数组都有一个名为length的属性,表示数组的长度。

length属性是public final int的,即length是只读的。
数组长度一旦确定,就不能改变大小。

int a[] = new int[10];
int n=a.length;//获取数组长度

数组索引

索引数组存储一系列经过组织的值,其中的每个值都可以通过使用一个无符号整数值进行访问。

数组索引始终从0开始,且添加到数组中的每个后续元素的索引以 1 为增量递增

索引的用法
数组通过[index]来获取指定位置的值,其中index为索引值

int a[] =  {
   1,2,3,4};
int index_1=a[0];//根据索引获取数组的数据
int index_2=a[1];//根据索引获取数组的数据
int index_3=a[2];//根据索引获取数组的数据
int index_4=a[3];//根据索引获取数组的数据

按照索引和数值的关系,如下表格

0 1 2 3
1 2 3 4

数组也可以配合循环语句进行业务处理

int a[] =  {
   1,2,3,4};
for(int i=0;i<a.length;i++){
   
	System.out.println(a[i]);//动态打印数组值
}
//也可以使用另一种循环方式
for(int temp:a){
   
	System.out.println(temp);//动态打印数组值
}
//还可以使用while和do-while,后续章节描述

结合索引与数值关系可以看出来,数组属于行数据,那么有行就有列,就可以构成表格数据格式,也就是二维数组。

二维数组

二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。

二维数组是数组的数组,一维数组可以看成行数据,那么二维数组就是表格形式,即每一行数据,都有多列值。

示例

int[][] i = new int[4][];
i[0]={
   1,2,3};
i[1]={
   1,3,4};
i[2]={
   1,4};
i[3]={
   1,5};
0 1 2 3
1 1 1 1
2 3 4 5
3 4

二维数组定义方式和一维数组一样,也是两种方式

动态方式
二维数组可以在声明的时候就指定数组大小,然后通过索引进行动态数据填充。
如:

type[][] i = new type[2][];//推荐
type i[][] = new type[2][3];

声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。

静态方式
二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值