一,一维数组
1,先声明,再用new关键字进行内存分配(两种方式)
数组元素类型 数组名字[ ];
数组元素类型[ ] 数组名字;
2,声明的同时为数组分配内存
语法:数组元素的类型 数组名 = new 数组元素的类型[数组元素的个数] ;
int month[ ]=new int[12]
初始化一维数组(两种方式)
int arr[]=new int[]{1,2,3,5,25};
int arr2[]={34,23,12,6};
例子
使用一维数组输出1~12月,每个月的天数。创建类,在主方法中创建并初始化一个用于1~12月每个月份天数的int类型数组,在控制台上输出1~12月每个月份的天数。
二,二维数组
1,创建二维数组:1,先声明,再用new关键字进行内存分配(语法如下)
数组元素的类型 数组名字[ ][ ];
数组元素的类型[ ][ ] 数组名字;
2,内存分配方式分为两种:
第一种是:直接为每一维分配内存空间
第二种是:分别为每一维分配内存
3,初始化二维数组代码:int myarr[ ][ ]={{12,0},{45,10}} ;初始化二维数组吧后,数组的下标都是从0开始
例子
例子2:
package a1;
public class A2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr2[][] = {{4,3},{1,2}};
System.out.println("数组中的元素是:");
int i=0;
for(int x[]:arr2) {
i++;
int j=0;
for(int e:x) {
if(i==arr2.length &&j==x.length ) {
System.out.print(e);
}else
System.out.print(e+",");
}
}
}
}
例子3:
package a1;
public class A1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int b[][] =new int [][]{{1},{2,3},{4,5,6}};
for(int k=0;k<b.length ;k++) {
for(int c=0; c<b[k].length ;c++) {
System.out.print(b[k][c]);
}
System.out.println();
}
}
}
ps:
防止数组下标越界方法:
一:a.length:防止循环内数组下标越界
二:for(int temp :a) {
System.out.println(temp);
}
1.替换数组元素
Arrays.fill(数组名,值);
例子:
package a1;
import java.util.Arrays;
public class A3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]=new int[5];
Arrays.fill(arr, 8);
for(int i=0;i<arr.length ;i++) {
System.out.println("第"+i+"个元素是:"+arr[i]);
}
}
}
2.替换数组部分元素
Arrays.fill(数组名,前索引,后索引,值);
0 1 2 3
45 12 2 10
45 8 2 10
前索引值改后索引值不改
例子:
package a1;
import java.util.Arrays;
public class A4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]=new int[] {45,12,2,10};
Arrays.fill(arr, 1,2,8);
for(int i=0;i<arr.length ;i++) {
System.out.println("第"+i+"个元素是:"+arr[i]);
}
}
}
3.数组排序
Arrays.sort(数组名);
例子:
package a1;
import java.util.Arrays;
public class A5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] =new int[] {23,42,12,8};
Arrays.sort(arr);
for(int i=0;i<arr.length ;i++) {
System.out.println(arr[i]);
}
}
}
复制数组:空位补0,溢出去掉
新数组名=Arrays.copyof(旧数组名,新数组长度);
例子:
package a1;
import java.util.Arrays;
public class A5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] =new int[] {23,42,12,8};
Arrays.sort(arr);
for(int i=0;i<arr.length ;i++) {
System.out.println(arr[i]);
}
}
}
5.复制数组部分元素
新数组名=Arrays.copyof(旧数组名,前索引,后索引);
前索引值在,后索引值不在
例子:
package a1;
import java.util.Arrays;
public class A6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]=new int[] {23,42,12,844,10};
int newarr[] =Arrays.copyOfRange(arr,0,3);
for (int i=0;i<newarr.length;i++){
System.out.println(newarr[i]);
}
}
}
6.查询数组元素
索引=Arrays.binarySesrch(数组名,元素);
先排序再查询
例子:
package a1;
import java.util.Arrays;
public class A7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int ia[] =new int[] {1,8,9,4,5};
Arrays.sort(ia);//对数组进行排序
int index=Arrays.binarySearch(ia, 4);
System.out.println("4的索引位置是:"+index);
}
}
查询部分数组元素
索引=Arrays.binarySesrch(数组名,前索引,后索引,元素);
前索引包含,后索引不包含
例子:
package a1;
import java.util.Arrays;
public class A8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str[]=new String[] {"ad","cd","ef","yz"};
Arrays.sort(str);
int index =Arrays.binarySearch(str, 0,2,"cd");
System.out.println("cd前索引位置是:"+index);
}
}