- 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
datatype[] arrayRefvar;
int[] num1;
- Java语言使用new *** 作符来创建数组,语法如下:
datatype[] arrayRevVar=new dataType[arraySize];
-
数组的元素是通过索引访问的,数组索引从0开始
-
获取数组长度:array.length
//变量的类型 变量的名字=变量的值;
//数组类型
public static void main(String[] args){
int[] nums;//1.声明一个数组
nums = new int[10];//2.创建一个数组
int[] nums2=new int[10];//声明和创建可以放在一起
//3.给数组元素赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
//计算所有元素的和
int sum=0;
for(int i=0;i
1.2 数组的四个基本特点
- 其长度是确定的。数组一旦被创建,它的大小就是不可改变的
- 其元素必须是相同类型,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论原始类型还是其他对象类型,数组对象本身是在堆中。
- ArrayIndexOutOfBoundsException:数组下标越界异常
- 普通的for循环
int[] arrays={1,2,3,45,5};
int sum=0;
for(int i=0;i
- for—Each循环(增强for循环)
int[] arrays={1,2,3,45,5};
for(int array:arrays){
System.out.println(array);
}
- 数组做方法入参(void作为方法入参,可以没有返回值)
int[] arrays={1,2,3,45,5};
printArray(arrays);
//打印数组元素
public static void printArray(arrays){
for(int i=0;i
- 数组作返回值(反转数组)
int[] arrays={1,2,3,45,5};
int[] reverse=reverse(arrays);
for(int i=0;.i
1.4 二维数组
- 二维数组的遍历
int[][] array={{3,4},{5,6},{6,7}}
//System.out.println(array[1][1]);
//遍历二维数组的长度
for(int i=0;i
1.5 Arrays类
- 数组的工具类是java.utill.Arrays
- 由于数据对象本身并没有方法可以供我们使用,但是API提供了一个工具类Arrays供我们使用
- Array类中的方法都是static修饰的静态方法,使用时直接使用类名进行调用,可以不用对象调用
- 常用功能
- 给数组赋值:fill方法
- 排序:sort方法,升序
- 比较数组:equals方法比较数组中元素值是否相等
- 查找数组元素:binarySearch对排序号的数组进行二分法查找 *** 作
int[] array={3,4,5,6,7,2,1,0,8,9,7};
//填充数组
Arrays.fill(array,2,4,0)
//打印数组
System.out.println(Arrays,toString(array));
//排序数组
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//二分法查找 返回的是值得下标
System.out.println(Arrays.binarySearch(array,0));
1.6 冒泡排序
- 冒泡排序是八大排序最出名的排序算法。
- 代码:两层循环,外层冒泡轮数,里层依次比较。
- 当我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。
public static void main(String[] args){
// 1.比较数组中,两个相邻的元素,如果第一个比第二个大,我们就交换他们的位置
// 2.每一次比较,都会产生一个最大或最小的数字
// 3.下一轮,则可以少一次排序
// 4.依次循环,直到结束
int[] a={4,5,6,5,45,54,5,64,54,7};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
//临时变量
int temp=0;
//外层循环,判断我们这个要走多少次;
for(int i=0;iarray[j+1]){
//如果第一个数大于第二个数,第二个数放前,第一个数放后
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(flag==false){
break
}
}
return array;
}
1.7 稀疏数组
//创建一个二维数组 11*11 0:没有棋子 1:黑子 2:白子
public static void main(String[] args){
int[][] array=new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
System.out.println("输出原始的数组");
for(int[] ints:array){
for(int anInt:ints){
System.out.print(anInt = "\t");
}
System.out.println();
}
}
//转换为稀疏数组保持
//1.获取有效值得个数
int sum = 0;
for(i = 0;i<11;i++){
for(int j=0;j<11;j++){
if(array[i][j]!=0){
sum++;
}
}
}
System.out.println("=======================");
System.out.println("有效值的个数" + sum);
//2.创建一个稀疏数组的数组
int[][] array2=new int[sum +1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//3.遍历二维数组,将非零的值,存放在稀疏数组中
int count = 0;
for(int i=0;i
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)