java基础-数组

  数组是java中常用的引用数据类型,是多个相同类型的数据按一定顺序排列的集合,通过数组名和下标的方式进行数据存取。创建数组对象时开辟内存中连续的空间,数组名引用的是这组连续空间的首地址。

分配内存:

  在方法中定义的一些基本类型的变量和对象的引用变量(这里体现为数组名)都在方法在中分配,当在一段代码中定义一个变量时,java就在栈内存中为这个变量分配内存空间。

  堆用来存放由new关键字创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆中创建了一个数组或对象后,同时还在栈内存中定义一个特殊的变量。让栈内存中的这个变量的取值等于数组或者对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),以后就可以在程序中使用栈的引用变量来访问堆中的数组或对象。

1、一维数组的创建和使用

  数组的创建分为数组声明和数组变量分配(初始化)两个部分。数组声明的一般格式如下:

数组的元素类型  数组名[ ]  /数组的元素类型[ ] 数组名。 java数组声明时不允许在方括号内指定数组大小。数组调用方式: 数组名[下标]。

  • 静态定义法

数组的声明和元素定义同时进行。

//静态声明
int arr2[];
arr2=new int[]{1,2,3,4,5,6};
System.out.println(arr2[0]);
  • 动态定义法

在定义数组时指定数组大小,在使用时对具体元素进行定义。

//动态声明
int arr[];
arr=new int[5];
arr[0]=1;

数组在只声明未进行元素指定时,数组具有默认初始化值,不同类型数组的默认初始化值如下:

数组默认初始化值
int []0
flaot[]/double[]0.0
char[]0(非0,\u000)
boolean[]false
引用数据类型[]null

特别的,与C不同,Java允许使用整型(byte/short/char/int,自动类型转换)变量指定数组元素的个数。

2、二维数组的创建和使用

  二维数组的元素是多个一维数组,声明格式如下。组成二维数组的数组的长度可以允许不同,所以在声明数组时必须指定数组的行。

数组的元素类型  数组名[ ][ ]  /数组的元素类型[ ][ ] 数组名

 使用方式与一维数组类似,这里不再赘述。

3、操作数组的工具类

java.util.Arrays是操作数组的工具类,常用方法如下:
  • 数组比较

public static boolean equals(数组类型[] a, 数组类型[] a2);为公共静态方法,可直接通过Arrays.equals()的方式调用。两个数组相等的比较原则是数组的内容完全相同。

源码如下:

比较的逻辑:首先用==判断两个数组的地址是否相同,如果地址相同说明两数组相等,返回true。若地址不相同,先判断数组是否为null,若为null,返回false,不为null,先比较数组长度是否相同,不同返回false,长度相同后依次比较数组元素,全部相同返回true。

  • 数组遍历

public static String toString(数组类型[] a); 源码如下:

 实现逻辑:借助StringBuilder将数组元素转化为字符串输出,达到数组遍历的目的。

  • 数组内容填充
public static void fill(int[] a, int val) ;以元素val填充数组a的每一个元素。

public static void fill(int[] a, int fromIndex, int toIndex, int val);
[fromIndex,toIndex),以val值填充该范围内的数组。

  • 数组排序
public static void sort(int[] a)

  • 有序数组的二分查找
public static int binarySearch(int[] a, int key);在数组a内查找元素key,返回下标。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值