1.声明数组 不允许在方框内限定数组个数 正确形式:int []a ;
2.创建数组 a = new int[110] 或者 int []a = new int[110]; int [][]b = new int[110][110];
3.允许使用int型变量制定数组个数 int s = 100; int []a = new int[s];(与C语言区别)
4.初始化:
第一种:
float a[] = {21.1f , 32.4f , 78f , 98f};
int a[][] = { {1}, {1,3}, {4,5,67},{90,89} }
第二种:
int []a = new int[5];
a[0] = 1; a[1] = 2 ; a[3] = 4;
5.数组引用 :
int a[] = {1 , 2, 3 } ;
int b[] = {4, 5 };
a = b; 系统释放分配给a的内存 , a存放的引用和b相同
而
char型数组 System.out.println不会输出数组的引用 , 而是输出数组本来的值
要是想输出引用 System.out.println(""+a);
6.常用函数:
(1)Arrays.toString(数组名) 循环输出数组
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int [][]a = new int[10][10];
for(int i = 0;i<2;i++)
{
for(int j = 0;j<2;j++)
a[i][j] = cin.nextInt();
}
int []b = new int[5];
for(int i = 0;i<2;i++)
b[i] = cin.nextInt();
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(a[1]));//一维数组
cin.close();
}
}
输出结果 输出一维数组全部数字
当改成二维数组时
输出结果: 输出地址全部
(2)length
float []a = new float[10];
int s = a.length;
s = 12
当是字符串时
String str;
str = cin.nextLine();
int s = str.length();
(3) arraycopy(sourceArray,int index1,copyArray,int index2,int length) 必须事先创建数组
将sourceAray 从index1开始的length的元素复制给copyArray数组的index2开始复制
int []a = new int[10];
int []b = new int[10];
for(int i = 0;i<5;i++)
a[i] = i*3;
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.arraycopy(a,1,b,1,5);
System.out.println(Arrays.toString(b));
System.arraycopy(a, 0, b, 2, 5);
System.out.println(Arrays.toString(b));
(4)copyOf 和 copyOfRange
public static double[] copyOf(double [] original,int length) 从原数组从0开始的length的元素的复制到指定数组中
public static double[] copyOfRange(double [] original,int from ,int to) 从from到to-1
(5)sort 只能升序
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
//整型
int []a = {12, 3, 45, 67 , 89, 10, 11 ,1 ,99 ,11 , 7};
System.out.print("整型数组排序: ");
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//字符串
String []b = {"c" , "z", "A" , "t" ,"M" , "h" ,"p" , "X"};
System.out.print("字符串忽略大小写的排序: ");
Arrays.sort(b,String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(b));
System.out.print("字符串不忽略大小写的排序: ");
Arrays.sort(b);
System.out.println(Arrays.toString(b));
//字符型
char []c = {'c' , 'a' , 'K' , 'L' ,'z' ,'x' ,'j'};
System.out.print("字符数组排序: ");
Arrays.sort(c);
System.out.println(Arrays.toString(c));
cin.close();
}
}
对二维数组来说
int [][]array = new int[110][110];
Arrays.sort(array);//先对行排序,再对列排序
(6)Arrays.binarySearch(array[] , int key)
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int []a = {12, 3, 45, 67 , 89, 10, 11 ,1 ,99 ,11 , 7};
Arrays.sort(a);
int key = 4;
int index1 = Arrays.binarySearch(a, key);
System.out.println(index1);
key = 89;
int index2 = Arrays.binarySearch(a, key);
System.out.println(index2);
cin.close();
}
}
输出结果:
-3
9