java中的数组
1、数组作为函数的返回值
例1:写一个方法, 将数组中的每个元素都 * 2
public class TestDome {
public static int[] sum(int[] array1){
int[] array2 = new int[array1.length];
for(int i = 0; i < array1.length; i++) {
array2[i] = array1[i] * 2;
}
return array2;
}
public static void main(String[] args) {
//写一个方法, 将数组中的每个元素都 * 2
int[] array1 = {1,2,3,4,5,6};
int[] ret = sum(array1);
System.out.println(Arrays.toString(ret));
}
}
由于数组是引用类型, 返回的时候只是将这个数组的首地址返回给函数调用者, 没有拷贝数组内容, 从而比较高
效
2、数组练习
2.1、数字转字符串
public static void main(String[] args) {
//数组转字符串
int[] array = {1,2,3,4,5,6};
System.out.println(Arrays.toString(array));
}
Arrays.toString()这是一个方法,将数字转换成字符串
接下来我们实现一个自己的转换方法MytoString()
我们看到打印出来是[1,2,3,4,5,6]是这个样子的,打印一个元素加上一个“,”(逗号),最后一个元素打印不加上“,”就行了,再将“[ ]”中括号加上去,这样就得到了 字符串。
public static String MytoString(int[] array){
if(array == null || (array.length == 0)){
return null;
}
String ret = "[";
for (int i = 0; i < array.length; i++) {
ret += array[i];
if(i != array.length){
ret += ",";
}
}
ret += "]";
return ret;
}
public static void main(String[] args) {
//数组转字符串
int[] array = {1,2,3,4,5,6};
System.out.println(MytoString(array));
}
2.2、数组拷贝
就是将一个数组拷贝到另一个新的数组当中那个去
这是用for循环来实现,得到array的么每个 元素,将他赋值到ret这个新数组中去
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int[] ret = new int[array.length];
for (int i = 0; i < array.length; i++) {
ret[i] = array[i];
}
System.out.println("ret为:"+Arrays.toString(ret));
}
那java中有没有用方法来实现呢???
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int[] ret = Arrays.copyOf(array,array.length);
System.out.printf(Arrays.toString(ret));
}
Arrays.copyOf():这是拷贝数组的方法
Arrays.copyOf(数组名,数组大小);
那可不可以 拷贝 一个 数组中有个范围的元素呢???
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int[] ret = Arrays.copyOfRange(array,1,5);
System.out.printf(Arrays.toString(ret));
}
Arrays.copyOfRange();
Arrays.copyOfRange(数组名,拷贝的起始位置,拷贝的终止位置); from: 1 to: 5,意思是拷贝数组的1到5范围的元素,但是这是一个左闭右开区间[1 , 5)不包含5位置的元素。
3、二维数组
二维数组实际上是一种特殊的一维数组,他的没每个 元素是由一维 数组组成的
上图中我们可以看到array[0],array[1],代表的两哥一维数组,这样我们就可确定二维数组的行数array.lenght ,array[0].lenght 表示第一行的列数。
2.1、二维数组的定义与使用
int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = new int[2][3];
int[][] array3 = new int[][]{{1,2,3},{4,5,6}};
二维数组中的[ ] 中也不能写数值
打印数组中的每个数:
使用Arrays.deepToString打印数组
我们可以看到 二维数组 中的列可以省略,行不可以省略
这是不规则数组,第一行只有两个元素,,第二行有三个元素,所以说明了行不能省略
不规则二维数组