Java:数组

17 篇文章 0 订阅

1、基本概念

(1)定义数组

int[] array = {1,2,3,4};
//int array[] = {1,2,3};  不建议这种写法
int[] array2 = new int[]{1,2,3,4}; 
int[] array3 = new int[10];
//当数组没有初始化,分配的默认值都是0

(2)初始化

int[] array1;
array1 = new int[10];

int[] arr2;
array2 = new int[]{1,2,3};

(3)访问数组元素

System.out.println(array[0]);
//求数组名的长度
System.out.println(array.length);

(4)数组的遍历
增强遍历

//for-each
for(int x:array){
	System.out.print(x);
}

2、引用变量

(1)引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量可以去操作对象。
(2)当一个对象没有被引用指向时,会被系统自动回收

int[] array = null;
//这里的array储存的是数组的地址,称为引用变量

(3)一个引用不能同时指向多个对象
(4)对象不能指向对象,只有引用才能指向对象
(5)null

int[] array = null;
System.out.println(array.length);
//会产生空指针异常

3、数组传参

(1)数组作为参数

public static void main(Sting[] args){
	int[] array = {1,2,3,4};
	func(array);
}
public static void func(int[] array){
}

例子

public static void main(Sting[] args){
	int[] array = {1,2,3,4};
	func1(array);
}
public static void func1(int[] array){
	array[0] = 99;
}
public static void func1(int[] array){
	array = new int[]{11,22,33,44};
}
//用第一个方法后,数组的内容变为{99,2,3,4}
//第二个方法后,数组内容不变

第一个方法修改了共同对象的内容
请添加图片描述

第二个方法使形参引用指向了一个新的对象,而没有修改原来的对象
请添加图片描述

(2)数组作为返回值

public static int[] func(){
}

4、数组相关方法

Arrays类中有许多关于数组的方法
(1)打印字符串

import java.util.Arrays;

int[] array = {1,2,3,4,5};
System.out.println(Array.toString(array));
//将数组转换成字符串之后打印

(2)数组排序

import java.util.Arrays;

Arrays.sort(array);

(3)数组比较

System.out.println(Arrays.equals(array1,array2));

(4)数组填充

Arrays.fill(array,9);
//将array数组中全部填充成9

(5)拷贝数组

int[] array2 = Arrays.copyOf(array1,array1.length);
//Arrays.copyof(array1,array1.length*2);
//Arrays.copyof(要拷贝的数组,拷贝的长度)

int[] array3 = Arrays.copyOfRange(array1,0,3);
//拷贝array1,从下标0到下标3,包括0但不包括3

System.out.println(arraycopy(array1,0,array4,0,array1.length));
//

5、二维数组

(1)定义

int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = new int[][]{{1,2,3},{4,5,6}};
int[][] array3 = new int[2][3];
//Java中定义二维数组时行不能省略

int[][] array4 = int[2][];
//可以省略列数————不规则二维数组

(2)二维数组实际上是一个一维数组
这个意味数组里存的是每一行一维数组中地址的元素

int[][] array = new int[2][3]; 
System.out.println(array.length);
//打印出是2即行数(二维数组元素的个数是行数)
System.out.println(array[0].length);
//打印出是3即列数

(3)遍历打印二维数组

//转化
System.out.println(Arrays.deepToString(array));

用for-each

for(int[] temp : array){
	for(int x : tmp){
		System.out.print(x);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙河板混

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值