1.java数组
java数组初始化
静态初始化:
数组的声明和数组元素的赋值操作同时进行
int[] ids1=new int[]{1,2,3,4};
int[][] ids2=new int[][]={{1,2,3},{4,3},{1}};
System.out.println(ids2[0])
动态初始化:
数组的声明和数组元素的赋值操作分开进行
int[] ids=new int[4];
int[][] ids=new int[2][3];
获取数组的长度
通过属性length 来获取数组的长度
System.out.println(ids.length);
java数组元素默认初始化值
整数型数据类型(int,short,byte) | 0 |
---|
小数数据类型(float,double) | 0.0 | 字符数据类型(char) | Ascii码为0的字符 | 布尔数据类型(boolean) | false | 字符串数据类型(String) | null |
java内存解析

数组常见算法
- 数组元素的赋值
- 求整形数组元素的最大,最小值,平均数,总和等
- 数组的反转,复制,查找
- 数组元素的排序算法
数组元素赋值
题目描述
回形数格式方阵的实现
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2
4 3
输入数字3,则程序输出: 1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
问题分析
观察回型数组特征,数字依次递增的循序为四个方向,向右,向下,向左,向上;所以实现时按照这四个方向来进行
方法1:变量控制方向
package arry1;
import java.util.Scanner;
public class case6{
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int num;
num=scan.nextInt();
int[][] array=new int[num][num];
int k=1;
int row=0,col=0;
for(int i=1;i<=num*num;i++){
if(k==1){
if(col<num&&array[row][col]==0)
array[row][col++]=i;
else{
k=2;
col--;
row++;
i--;
}
}
else if(k==2){
if(row<num&&array[row][col]==0)
array[row++][col]=i;
else{
k=3;
col--;
row--;
i--;
}
}
else if(k==3){
if(col>=0&&array[row][col]==0)
array[row][col--]=i;
else{
k=4;
row--;
col++;
i--;
}
}
else if(k==4){
if(row>=0&&array[row][col]==0)
array[row--][col]=i;
else{
k=1;
row++;
col++;
i--;
}
}
}
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
}
方法2:索引控制方向
package arry1;
import java.util.Scanner;
public class case5{
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
int[][] array=new int[num][num];
int minX=0,minY=0;
int maxX=num-1,maxY=num-1;
int count=0;
while(minX<=maxX){
for(int j=minY;j<=maxY;j++)
array[minX][j]=++count;
minX++;
for(int i=minX;i<=maxX;i++)
array[i][maxY]=++count;
maxY--;
for(int j=maxY;j>=minY;j--)
array[maxX][j]=++count;
maxX--;
for(int i=maxX;i>=minX;i--)
array[i][minY]=++count;
minY++;
}
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
}
排序算法
衡量排序算法的指标:
- 时间复杂度:分析关键字的比较次数和记录的移动次数
- 空间复杂度:分析排序算法中需要多少辅助内存
- 稳定性:若两个记录A和B的关键字相等,但排序后A,B的先后次序保持不变,则称这种算法是稳定的
array工具类的使用
常见array工具类的使用
java.util.Arrays

数组常见异常
- 数组索引越界异常

- 空指针异常

|