Java 数组

数组:

​ 一组数据的集合,每个数据被称为元素。

数组存放相同数据类型,有长度限制(一个容器)

初始化:

 int[] a= {var1,var2,.....};  
 int a[]= {var1,var2,.....};

二维数组

int [][] a;

创建数组对象

int[] a = new int[4];
String[] s = new String[2];
char[] c = new char[1];

数组对象,在内存中,就是一块连续的内存空间,在这个连续的空间中,可以存放多个类型相同的数据。

数组对象中只有一个属性(length),表示数组的长度。

数组对象中的方法,只有从父类型Object中继承过来的方法。
除此之外,数组对象中就没有其他属性和方法了。

数组对象的长度:

  1. 数组长度,是指在一个数组对象中,最多可以存放多少个同一类型的数据
  2. **数组长度,必须在创建数组对象的时候就明确指定
  3. 数组长度,一旦确定,就无法再改变**
  4. 数组长度,可以为0,但是不能为负数

类型名[] 数组名 = new 类型名[数组长度]

注意,数组也是一种引用类型

public class ArrayTest {
	int[] arr1;
	public static void main(String[] args) {
		ArrayTest arr =new ArrayTest();
		System.out.println(arr.arr1);
	}
}

输出null

public class ArrayTest {
	int[] arr1= {1,2,3,4,5,6};
	public static void main(String[] args) {
		ArrayTest arr =new ArrayTest();
		System.out.println(arr.arr1);
	}
}

输出arr1在内存的地址

类型名[] 数组名 = new 类型名[数组长度]

如果长度不够用

数组扩容:

​ 创建一个新数组,将之前的元素复制到新数组里。

数组工具类

java.util.Arrays类

toString方法
可以把一个数组变为对应的String形式
copyOf方法
可以把一个数组进行复制
该方法中也是采用了arraycopy方法来实现的功能
copyOfRange方法
也是复制数组的方法,但是可以指定从哪一个下标位置开始复制
该方法中也是采用了arraycopy方法来实现的功能
sort方法
可以对数组进行排序
binarySearch方法
在数组中,查找指定的值,返回这个指定的值在数组中的下标,但是查找之前需要在数组中先进行
排序,可以使用sort方法先进行排序
equals方法
可以比较俩个数组是否相等,但是要求俩个数组中的值一一相等并且顺序也要一致才行,所以在比较之前,我们最好是用sort方法对俩个数组先进行排序
第一个要求,俩个数组的元素个数相同
第二个要求,俩个数组的每个下标对应的数据相同
fill
可以使用一个特点的值,把数组中的空间全都赋成这个值
asList
可以把一组数据,封装到一个List集合中,并且把list集合对象返回。

二维数组:

int + [] = int[] ,所以一维数组int[]中存放的是数据是int类型数据
int[] + [] = int[][] ,所以二维数组int[][]中存放的是数据是int[]类型数据,也就是一维数组对象
    
//三个一维数组
int[] a1 = {1,2,3};
int[] a2 = {2,3,4};
int[] a3 = {3,4,5};
//二维数组中,存放三个一维数组对象
int[][] arr = {
a1,
a2,
a3
};
//等价于上面的代码
int[][] arr = {
{1,2,3},
{2,3,4},
{3,4,5}
};

//第一个中括号中的4,代表这个二维数组对象里面,最多可以存放4个一维数组
//第二个中括号中的3,代表这个二维数组中,每个存放的一维数组对象,都可以存放存放3个int数据
int[][] a = new int[4][3];
//这句代码等价于以下代码
int[][] a = new int[4][];
a[0] = new int[3];
a[1] = new int[3];
a[2] = new int[3];
a[3] = new int[3];
//这句代码等价于以下代码
int[][] a = {
{0,0,0},
{0,0,0},
{0,0,0},
{0,0,0}
};

int[][] a = new int[4][]; //共4层楼
//每次楼的房间数不同
a[0] = new int[3];
a[1] = new int[5];
a[2] = new int[2];
a[3] = new int[4];
//也可以这样来表示
int[][] a = {
{1,2,3},
{1,2,3,4,5},
{1,2},
{1,2,3,4}
};

int[][] a = new int[3][];//三层楼
a[0] = new int[1];//第一层楼,1间房
a[1] = new int[2];//第二层楼,2间房
a[2] = new int[3];//第三层楼,3间房
a[0][0] = 10; //第一层楼,第一间房,存放数据
a[1][0] = 20; //第二层楼,第一间房,存放数据
a[1][1] = 20; //第二层楼,第二间房,存放数据
a[2][0] = 30; //第三层楼,第一间房,存放数据
a[2][1] = 30; //第三层楼,第二间房,存放数据
a[2][2] = 30; //第三层楼,第三间房,存放数据

String[][] str = {
{"test1"},
{"hello1","hello2"},
{"world1","world2","world3"}
};
//循环三次,因为str中有三个元素
//只不过这三个元素每一个都是个一维数组
for(int i=0;i<str.length;i++){
//第一个一维数组中有1个元素,元素是String类型的
//第二个一维数组中有2个元素,元素是String类型的
//第三个一维数组中有3个元素,元素是String类型的
//所以内层循环每次打印的次数是不一样的
for(int j=0;j<str[i].length;j++){
System.out.println(str[i][j]);
}
}

数组的可变参数:(可变参数只能作为最后一个参数)

public void test(int... a){
}
//在调用这种方法的时候,我们所传的参数情况就可以有多种选择了
int[] arr = {1,2,3};
t.test();
t.test(1);
t.test(1,2,3,4);
t.test(arr);

在test方法中,这个可变参数a,其实就是一个int类型的数组,在方法中可以直接把a当做数组来使用。 如果没有传任何参数,那么这个数组a的长度就是0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值