ArrayIndexOutOfBoundsException:
数组越界报错
int[] nums = new int[100];//定义数组
int add = 0;
System.out.println(Array.getLength(nums));
//计算1-100的和
for (int i = 1; i <= nums.length; i++) {
if (i<= nums.length){
nums[i-1] = i;//第i个数填充到第i-1地址
add += i;
}
}
System.out.println("输出er的和:"+add);
两种声明方法
动态初始化
int[] num = new int[10]; |//int array = null; 声明数组
//所有值默认为0 |//array = new int[10]; 创建数组+空间
num[i] = 0; |//array[0] = 1; 给数组赋值
. |//.....
. |
. |
.
静态初始化 创建+赋值 空间根据输入的数字判断
int[] nums = {1,2,3,4,5,6,7,8,9,10};
引用类型
Man[] mans = { new Man(),new Man()};//Man 为其他类的类名,如果类不在一个包则需要添加 import这个包
数组使用
for each循环
适合打印输出
int[] nums = {1,2,3,4,5,6};
for (int num : nums){
System.out.println(num);
}
}
1
输出
2
3
4
5
6
//数组作为方法
//打印数组
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
//作为返回值
int[] reversy = reversy(nums);//引用
printArray(reversy);//打印数组
//反转数组
public static int[] reversy (int[] array){
int[] result = new int[array.length] ;
for (int i = 0,j = result.length-1 ; i < array.length; i++,j--) {
result[j]=array[i];
}
return result;
}
多维数组
int[][] array = {{2,3},{3,4},{4,5}};
for (int i = 0; i < array.length; i++) {
printArray(array[i]);
}
}
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]);
}
注 意
没办法sout输出一个对象
要通过解析,比如 System.out.print(Arrays.toString());
冒泡排序
比较两个相邻的元素,如果第一个比第二个大则交换两个数
public class Demo1 {
public static void main(String[] args) {
int[] array = new int[]{34,5,22,-98,6,-76,0,3};
extend(array);
System.out.println( Arrays.toString(array));
}
public static void extend(int[] arrys){
for (int i = 0; i < arrys.length-1; i++) {
for (int j =0;j < arrys.length -i-1; j++) {
if (arrys[j]>arrys[j+1]){
int temp = arrys[j];
arrys[j]=arrys[j+1];
arrys[j+1]=temp;
}
}
}
}
}
稀疏数组
大部分为同一个值,只记录有效的值,还原根据有效值还原。