基础部分(六)数组
2021-04-25 19:28
标签:com new === 变量类型 描述 结束 直接 意义 转换 数组 定义 1.数组是相同类型数据的有序集合 2.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 3.其中的每个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 例1: public class Demo01 { public static void main(String[] args) { //变量类型 变量名字 = 变量值; int[] nums;//1.声明一个数组 //int nums[]; 效果相同,但非首选方法 //Java语言使用new操作符来创建数组 nums = new int[5];//2.创建一个数组 //3.给数组元素中赋值 nums[0]=1; nums[1]=2; nums[2]=3; nums[3]=4; nums[4]=5; //计算所有元素和 int sum=0; //获取数组长度 arrays.length for (int i = 0; i
sum+=nums[i]; } System.out.println(sum); } } ·数组的元素是通过索引访问的,数组索引从0开始 三种初始化 1·静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}; 2·动态初始化 int[] a = new int[2]; a[0]=1; a[1]=2; 3·数组的默认初始化 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被吟诗初始化。(一般为0或者null) 数组的四个基本特点 ·其长度是确定的。数组一旦创建,它的大小就是不可改变的 ·其元素必须是相同类型,不允许出现混合类型 ·数组中的元素可以是任何数据类型,包括基本类型和引用类型 ·数组可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。 数组边界 ·下标的合法区间:[0,length-1],若越界就会报错 例如 public static void main(String[] args) { int[] a = new int[2]; System.out.println(a[2]); } 运行结果: ·ArrayIndexOutOfBoundsException:数组下标越界异常! 数组使用 ·普通for循环 ·for-each循环 ·数组作方法入参 ·数组作返回值 例2: public class Demo04 { } 多维数组 ·多维数组可以堪称数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 ·二维数组 int a[][] =
new int [2][5]; 该二维数组a可看成一个两行五列的数组 例3: public class Demo05 { public static void main(String[] args) { int[][] array = {{1, 2, 3, 4, 5}, {2,
3, 4, 5, 6}}; for (int i = 0; i for (int j = 0; j
System.out.print(array[i][j]+" "); } System.out.println(); } } } 输出结果: Arrays类 ·数组的工具类java.util.Arrays ·查看JDK帮助文档 ·Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”对象进行调用.(注意是“不用”,而不是“不能用”) ·具有以下常用功能: 1.给数组赋值:通过fill方法 2.给数组排序:通过sort方法 3.比较数组:equals方法比较数组中元素是否相等。 4.查找数组元素:通过binarySearch方法对排序好的数组进行二分查找法操作 例4: public class Demo06 { public static void main(String[] args) { int[] a
={112,2,34,9786,43515,432,36,6}; Arrays.sort(a); //数组进行排序 System.out.println(Arrays.toString(a)); Arrays.fill(a,2,4,0); //数组填充 System.out.println(Arrays.toString(a)); } } 输出结果: 例5:冒泡排序 时间复杂度为O(n2) import java.util.Arrays; /*冒泡排序
1.比较数组中两个相邻的元素,若第一个数比第二个数大,交换两数的位置 2.每次比较都会产生一个最大或最小的数字 3.下一轮可以少一次排序 4.依次循环直到结束 */ public class Demo07 { public static void main(String[] args) { int[] a={2,4,124,5,351,41,51,4125}; int[] sort= sort(a); System.out.println(Arrays.toString(a)); } public static int[] sort(int[] array){ int tmp=0; //外层循环:判断要走多少次 for (int i = 0; i boolean flag = false; //优化 通过flag减少无意义的比较 //内层循环 比较两数 上述第一步 for (int j = 0; j
if(array[j+1] tmp=array[j]; array[j]=array[j+1]; array[j+1]=tmp; flag=true; } } if(flag=false) { break; } } return array; } } 输出结果: 稀疏数组 ·当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组 ·稀疏数组的处理方式是: 1.记录数组共有几行几列,有几个不同的值 2.把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 ·如下图,左边是原始数组,右边是稀疏数组 ? 例6:利用稀疏数组存储一个五子棋棋盘 public class Demo08 {
public static void main(String[] args) {
//1.创建一个二维数组11*11 0:空白 1:黑棋 2; 白棋
int[][] array1=new int[11][11];
array1[1][2]=1;
array1[2][3]=2;
//输出原始数组
System.out.println("输出原始数组");
for (int i = 0; i
int[] ints = array1[i]; for (int anInt : ints)
System.out.print(anInt + "\t"); System.out.println();
}
System.out.println("====================");
//转换为稀疏数组来保存 //获取有效值的个数
int sum = 0;
for (int i = 0; i
for (int j = 0; j
if (array1[i][j]!=0){ sum++; } }
}
System.out.println("有效值的个数="+sum);
//2.创建一个稀疏数组
int[][] array2= new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
//遍历二维数组,将非零值,存放在稀疏数组中
int count=0;
for (int i = 0; i for (int j = 0; j
if (array1[i][j]!=0){ count++; array2[count][0]=i; array2[count][1]=j; array2[count][2]=array1[i][j]; } }
}
//输出稀疏数组
System.out.println("稀疏数组");
for (int i = 0; i
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("===================="); //将稀疏数组还原
System.out.println("还原");
//1.读取稀疏数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
//2.给其中元素还原它的值
for (int i = 1 ; i
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
//3.打印
System.out.println("输出还原的数组");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt+"\t"); } System.out.println();
}
} } 输出结果: 基础部分(六)数组 标签:com new === 变量类型 描述 结束 直接 意义 转换 原文地址:https://www.cnblogs.com/alljust4u/p/13256479.html
public static void main(String[]
args) {
int[] arrays={1,2,3,4,5};
//foreach JDK1.5 没有下标
for (int array : arrays) {
System.out.println(array);
}
print(arrays);
int[] reverse =
reverse(arrays);
print(reverse);
}
//反转数组 作为方法的调用
public static int[] reverse(int[]
arrays){
int[] result=new int[arrays.length];
//反转操作
for (int i=0,j=result.length-1;i
result[j]=arrays[i];
}
return result;
}
//打印数组元素
public static void print(int[]
arrays){
for (int i = 0; i
}
}
上一篇:Java—接口