定义:
数组就是一个变量,用于将相同数据类型的数据存储在内存中,数组的每一个数据类型元素都属于同一数据类型。
语法:
- 声明数组:
int [ ]socres; int scores[ ];
- 声明+分配空间:
int [ ]scores=new int[30]; int scores [ ]=new int [30];
- 赋值:
public static void main(String[] args) {
// 赋值方法1(逐个赋值)
int[] a=new int[3];
a[0]=44;
a[1]=66;
a[2]=77;
System.out.println("数组长度:"+a.length+","+a[1]);
//2和3方法无法分配空间,默认为赋值多少就是多少
//赋值方法2
int b[]={44,66,77};
System.out.println("数组长度:"+b.length+","+b[1]);
//赋值方法3(new int[]中的int必须为空)
int c[]=new int[]{44,66,77};
System.out.println("数组长度:"+c.length+","+c[1]);
//直接创建并赋值必须一并完成,以下是错误的:int[]score;score={50,40};
}
数组元素默认类型:
- int:0
- double:0.0
- char:‘\u0000’
- boolean:false
数组排序
public static void main(String[] args) {
int scores[]={55,44,32,56,77,66};
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]);
}
//只有Arrays.sort(scores)升序方法,无降序方法,降序需要改变for循环的操作
Arrays.sort(scores);
System.out.println("------升序-----------");
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]);
}
System.out.println("-------降序----------");
//注意是scores.length-1,否则下标越界
for(int i=scores.length-1;i>=0;i--){
System.out.println(scores[i]);
}
}
}
字符和数字的升降序(Array.sort()方法应用):
public static void main(String[] args) {
int scores[]={55,44,32,56,77,66};
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]);
}
//只有Arrays.sort()升序方法,无降序方法,降序需要改变for循环的操作
Arrays.sort(scores);
System.out.println("------升序-----------");
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]);
}
System.out.println("-------降序----------");
//注意是scores.length-1,否则下标越界
for(int i=scores.length-1;i>=0;i--){
System.out.println(scores[i]);
}
//字母升降序
String code[]={"as","sf","sr","ews","es","ds"};
for(int i=0;i<code.length;i++){
System.out.println(code[i]);
}
//只有Arrays.sort()升序方法,无降序方法,降序需要改变for循环的操作
Arrays.sort(code);
System.out.println("------升序-----------");
for(int i=0;i<code.length;i++){
System.out.println(code[i]);
}
System.out.println("-------降序----------");
//注意是scores.length-1,否则下标越界
for(int i=code.length-1;i>=0;i--){
System.out.println(code[i]);
}
}
插入元素并排列顺序
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int list[]=new int[6];
list[0]=95;
list[1]=86;
list[2]=73;
list[3]=68;
list[4]=53;
int num=77;
int index=0;
for(int i=0;i<list.length;i++){
if(num>list[i]){
index=i;
break;
}
}
System.out.println("下标:"+index);
for(int j=list.length-1;j>index;j--){
//list[5]=list[4]以此类推到list[inedx+1]为止
list[j]=list[j-1];
}
System.out.println("成绩:");
list[index]=num;
for(int k=0;k<list.length;k++){
System.out.println(list[k]);
}
}
}
Arrays类常用方法
Arrays.equals(array1,array2):比较两个数组是否相等
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int arr1[]={20,20,20};
int arr2[]=new int[]{20,20};
System.out.print(Arrays.equals(arr1, arr2));
}
}
Arrays.sort(array):升序(代码略,见前文)
Arrays.toString(array):将一个数组转换成字符串
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int arr1[]={20,20,20};
//输出结果[20, 20, 20]
System.out.print(Arrays.toString(arr1));
}
}
Arrays.fill(array,val):将所有数组元素赋值为val
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int arr1[]=new int[5];
Arrays.fill(arr1, 20);
//输出结果[20, 20, 20, 20, 20]
System.out.print(Arrays.toString(arr1));
}
}
Arrays.copyOf(array,length):将数组赋值为一个长度为length的新数组
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int arr1[]=new int[5];
Arrays.fill(arr1, 20);
int arr2[]=Arrays.copyOf(arr1, 8);
//输出结果[20, 20, 20, 20, 20, 0, 0, 0]
System.out.print(Arrays.toString(arr2));
}
}
Arrays.binarySearch(array,val):查询元素val在数组中的下标
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int arr1[]=new int[]{20,30,21,22,39};
//输出结果3
System.out.print(Arrays.binarySearch(arr1, 22));
}
}
二维数组
定义:从内存分配原理上说,Java只有一维数组没有二维数组,二维数组只不过是一堆一维数组,其中每个数组元素又是数组类型而已,例如,int s[][]=new int [1][2]相当于s[0]中有2个数组元素s[0][0]和s[0][1]。
语法:
public static void main(String[] args) {
{
// 赋值方法1(逐个赋值)
int[][] a=new int[3][4];
a[0][1]=44;
a[0][2]=66;
a[2][1]=77;
System.out.println("数组长度:"+a.length+","+a[2][1]);
//2和3方法无法分配空间,默认为赋值多少就是多少
//赋值方法2
int b[][]={{1,2,3},{22,3},{4,5,6}};
System.out.println("数组长度:"+b.length+","+b[1][0]);
//赋值方法3(new int[][]中的[][]必须为空)
int c[][]=new int[][]{{44,66,77},{23,4,5}};
System.out.println("数组长度:"+c.length+","+c[1][1]);
//直接创建并赋值必须一并完成,以下是错误的:int[]score;score={50,40};
}
}
遍历:
public static void main(String[] args) {
{
int[][]a={{22,34,4},{12},{33,44}};
for(int i=0;i<a.length;i++){
//注意:a[i].length的使用
for(int j=0;j<a[i].length;j++){
System.out.println(a[i][j]);
}
}
}
}