数组是最常见的数据结构,每个数组元素存放一个数据,通过数组元素的索引来访问数组元素。

一维数组

  • 数组的定义
    java支持两种方式来定义数组
1) type[] arrayName;
2) type arrayName[];

一般使用第一种,因为使用的语义更清晰具有更好的可读性。数组定义的是一种引用类型的变量,仅仅表示定义了一个引用变量(即一个指针)还未指向任何有效内存,因此还没有内存空间来存储数据元素,只有对数组进行初始化才可使用。

  • 数组的初始化
    数组需要进行初始化(即为元素分配内存空间,为每个数组元素赋初值)才可以进行使用
    数组元素需要具有相同的数据类型,因此在一个数组中元素类型唯一。因为java是面向对象的语言,而类与类之间可以继承,因此会产生数组中存放多个数据类型的假象,但是其真相是它们的元素类型因为也是继承的所以还是同一类型的元素。数组初始化完成后,数组在内存中所占的空间将被固定,因此数组的长度不可变。即使将某个数组的元素清空它占据的空间依然被保存,依然属于该数组。
    具有两种初始化方式

1)静态初始化:初始化时显式指定每个数组元素的初始值,由系统决定数组长度。

arrayName= new type[]{element1,element2,element3,……}

2)动态初始化:初始化时只指定数组长度,系统为数组元素分配初始值

arrayName = new type[length];
  • 数组元素的初始值:
    1)整数类型:byte,short,long,int为0
    2)浮点类型:double,float为0.0
    3)字符类型:char为’\u0000’
    4)布尔类型:boolean为false
    5)引用类型:类,接口,数组为null

  • 使用数组
    对数组元素进行访问,进行赋值和取出。在数组引用变量后紧跟一个方括号[]里面的就是数组元素的索引值,凭借这个就可以对数组进行访问,数组元素可当作普通变量使用。索引值从0开始,最后一个元素为数组的长度-1 。数组的变量只是一个引用,因此这个引用量可以指向任何有效的内存。实际的数组对象被存储在堆内存中,引用量是一个局部变量被存储在栈内存中

  • 遍历数组

for(int i=0;i<array.length;i++){statement
}
  • 数组的常见异常
    1)数组索引越界异常(ArrayIndexOfBoundsException)
    访问数组时访问到数组中的不存在索引编号
    2)空指针异常(NullPointerException)
    数组引用没有指向对象,代码却在操作数组对象中元素时

二维数组

  • 数组的定义
    定义上没有巨大的区别,因为二维数组相当于一维数组的扩展,从java底层语法看,数组变量是一个引用指向真实的数组内存,定义二维数组的实质其实就是定义一维数组,二维数组元素也是引用,指向一维数组的引用。定义方式有三种
1)type[][] arrayName;
2)type[] arrayName[];
3)type arrayName[][];
  • 数组的初始化
    和一维数组的区别在于多了行和列的概念。本质上相当于一维数组但是为了方便我们仍然将其视为行和列确定索引的数组。

方法一:new出对象再初始化每个对象

type[][] arrayName=new type[row][col];
//row为二维数组的长度,相当于行
//为二维数组中一维数组的长度,相当于列
arrayName[0][0] = XX;
arrayName[0][1] = XX;
arrayName[0][2] = XX;
……

方法二:new对象]初始化

type[][] arrayName=new typeName[][]{{X,X,X,X},{X,X,X,X},{X,X,X,X}};

方法三:赋值创建对象

type[][] arrayName={{X,X,X,X},{X,X,X,X},{X,X,X,X}};

初始化数组必须要指定其行数但是可以不指定列数。因此我们可以制定不规则数组

int[][] arr=new int[2][];
arr[0]=new int[2];
arr[1]=new int[4];
  • 遍历数组
for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){statement}
}

java基本语法(三)——一维数组和二维数组相关推荐

  1. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))     二维数组(二维数组的遍历.排序.查找.定义 ...

  2. java 二维数组 的方法和属性_Java一维数组和二维数组详解(Java必备知识)

    数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组.是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列. 目录 一维数组 创建一维数组 给一维数组赋值 获取数组的 ...

  3. Java——动态创建一维数组和二维数组

    一.数组的定义: 整数型一维数组:int[] a;或 int a[];        a = new int[m];(m为数组元素个数) 整数型二维数组:int[][] a;或 int a[][];或 ...

  4. 【java基础】——一维数组和二维数组存储占用内存大小问题

    问题:在java中,一维数组和二维数组在数据量一样的情况下,开辟的内存大小是怎样的? 一.尝试阶段: 1.代码一: public class OneArrayMemory{public static ...

  5. java操作数组(一维数组、二维数组的声明和遍历)

    java操作数组(一维数组.二维数组的声明和遍历) 1.一维数组 三种声明数组的方法和四种遍历数组的方法 public static void main(String[] args) {//静态初始化 ...

  6. Java中的一维数组和二维数组

    Java中的数组 常用的就是一维数组.二维数组. 一维数组 数组定义:数据就是相同数据元素的集合. 数组是一种引用数据类型.不属于基本数据类型. (1) 如何定义(声明)一维数组? 声明格式:数据类型 ...

  7. 某年级三个班的Java考试成绩如下表所示,请采用二维数组保存这些数据(Java实验)

    某年级三个班的Java考试成绩如下表所示,请采用二维数组保存这些数据 1班 99 68 97     2班 89 95 88 59 64 3班 89 79 99 58   4班 59 79 85 63 ...

  8. Java数组介绍(一维数组和二维数组)

    Java数组介绍(一维数组和二维数组) 1. 概述 · 数组是存储多个变量的容器. · 存储的多个变量必须是同一种数据类型. · 数组既可以存储基本数据类型,也可以存储引用数据类型. 2. 数组定义的 ...

  9. 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组

    整篇文章为对java数组的完整理解以及部分排序,并有一些简单的demo,经典的案例与蓝桥杯的一些经典数组题有专门的文章梳理. 目录 数组概述 什么是数组 数组的结构 数组的特点: 数组分类 一维数组声 ...

最新文章

  1. python二十一:文件操作
  2. window系统 telnet报错:‘telnet‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. 瑞星linux u盘引导盘杀毒教程,瑞星杀毒U盘怎样用U盘启动电脑
  4. html如何引入less,VueJS如何引入css或者less文件的一些坑
  5. Linux系统初始化更新(更换阿里源)(centos7mini)
  6. 输出奇数和偶数(Java)
  7. 4.高性能MySQL --- Schema与数据类型优化
  8. 准确率(accuracy),精确率(Precision),召回率(Recall)和F1-Measure
  9. ecg 幅度_用ECG和PPG测血压靠谱吗?有什么比较好的算法?
  10. 武汉大学计算机2019转专业,武汉大学可以转专业吗,武汉大学新生转专业政策
  11. PWmat案例赏析:计算精度高、速度快的第一性原理计算,研究表面终端结构对NV色心影响
  12. CSR867x — TWS模式的应用笔记【转载】
  13. jQuery的9种方式实现下拉列表
  14. 百分百解决 mbatis/mp报错 Invalid bound statement (not found)
  15. weblogic BEA-170011
  16. 使用Notepad++将windows格式转为linux 的unix
  17. 位移模块\A6210\TSI\CSI6500\EPRO
  18. 老白智慧药房显示服务器异常,老白智慧药房app
  19. Ava Trader MT4 Terminal EA交易(4)注册模拟账号,写第一个策略
  20. 磁盘文件恢复 disk drill

热门文章

  1. 亲密关系科学(01)婆媳相处原则-36计
  2. 两种服务器机柜的冷却解决方案
  3. PostgreSQL之pgdump备份恢复
  4. 共享打印机服务器安装不正确,尝试安装共享网络打印机时出错 - Windows Server | Microsoft Docs...
  5. Android开发——Java基础(2)
  6. 【转贴】北大一牛人写的爆强失恋诗
  7. CIAGAN: Conditional Identity Anonymization Generative Adversarial Networks
  8. 我的世界无限法则服务器,无限法则官网预约地址戳这里 无限法则在哪预约
  9. 用Metasploit破解ftp用户名和密码
  10. c++ 中指针数组 数组指针 new