示例:
package com.wmwx.array; import java.util.Arrays; public class Demo06 { public static void main(String[] args) { int[] array = {1, 234, 56, 7890}; //打印数组 System.out.println(array); //输出[I@e73f9ac System.out.println(Arrays.toString(array)); //输出[1, 234, 56, 7890] //排序数组 Arrays.sort(array); //升序排序 System.out.println(Arrays.toString(array)); //输出[1, 56, 234, 7890] //查找元素 System.out.println(Arrays.binarySearch(array, 234)); //输出2 //填充数组 Arrays.fill(array, 0); System.out.println(Arrays.toString(array)); //输出[0, 0, 0, 0] //比较数组 System.out.println(Arrays.equals(array, new int[]{0, 0, 0, 0})); //输出true } } 稀疏数组当一个数组中大部分元素为0,或为同一值时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方式是:
记录数组一共有几行几列,有多少个不同的值
把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
示例:
package com.wmwx.array; import java.util.Arrays; public class Demo07 { public static void main(String[] args) { //11*11的棋盘上:0 空格 1 黑棋 2 白棋 int[][] chess = new int[11][11]; chess[1][2] = 1; chess[2][3] = 2; //输出原始数组: System.out.println("原始数组如下:"); for (int[] arrs: chess) { for (int i: arrs) { System.out.print(i+" "); } System.out.println(); } System.out.println("====================="); //转换为稀疏数组并输出 chess = sparse(chess); System.out.println("稀疏数组如下:"); for (int[] arrs: chess) { for (int i: arrs) { System.out.print(i+" "); } System.out.println(); } System.out.println("====================="); //还原成原始数组并输出 chess = toArray(chess); System.out.println("还原数组如下:"); for (int[] arrs: chess) { for (int i: arrs) { System.out.print(i+" "); } System.out.println(); } } public static int[][] sparse(int[][] array){ //第一步:获取有效值的个数 int sum = 0; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { if (array[i][j]!=0){ sum++; } } } System.out.println("有效值的个数:"+sum); System.out.println("====================="); //第二步:创建一个稀疏数组 int[][] sparseArray = new int[sum+1][3]; sparseArray[0][0] = array.length; sparseArray[0][1] = array[0].length; sparseArray[0][2] = sum; //第三步:遍历原数组,将非零值存放到稀疏数组中 int count = 0; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { if (array[i][j]!=0){ count++; sparseArray[count][0] = i; sparseArray[count][1] = j; sparseArray[count][2] = array[i][j]; } } } //第四步:返回稀疏数组 return sparseArray; } public static int[][] toArray(int[][] sparse){ //第一步:构建原始数组 int[][] array = new int[sparse[0][0]][sparse[0][1]]; //第二步:还原其中的值 for (int i = 1; i < sparse.length; i++) { array[sparse[i][0]][sparse[i][1]] = sparse[i][2]; } //第三步:返回原始数组 return array; } }最终的输出结果如下:
原始数组如下: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ===================== 有效值的个数:2 ===================== 稀疏数组如下: 11 11 2 1 2 1 2 3 2 ===================== 还原数组如下: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Java面向对象 面向过程&面向对象面向过程:
步骤清晰简单,第一步做什么,第二步做什么......
面向过程适合处理一些较为简单的事情
面向对象:
物以类聚,分类的思维模式。思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
面向对象适合处理复杂的问题,适合处理需要多人协作的问题。
概述:对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
什么是面向对象?面向对象(Object-Oriented Programming, OOP)的本质是以类的方式组织代码,以对象的方式封装数据。
三大特性:
封装
继承
多态
注意:
从认识论的角度考虑,是先有对象后有类。因为对象是具体的,而类是抽象的。类是对对象的抽象。
从代码运行的角度考虑,是先有类后有对象。类是对象的模板。
类与对象的关系类是一种抽象的数据类型。它是对某一类事物的整体描述或定义,但并不能代表某一个具体的事物。
如:人、动物、植物、电脑、手机,等等......
对象是抽象概念的具体实例。
如:张三、隔壁家的小花猫咪咪、《唐伯虎点秋香》里的那只名叫旺财的狗
初始化与创建对象创建的方式:使用new关键字创建对象