本帖最后由 V_nan 于 2015-5-15 21:45 编辑
笔记内容:数组的重要点
笔记来源:毕向东Java基础视频第4天 正文:
-------------------------------------------------------
数组的理解:
数组的基本解释:数组本身是一种引用类型,一个数组定义好后,数组长度和存储空间是不变的。
数组的定义格式: a: int[] arr
b: int arr[] 这两种方法定义格式推荐使用a,a定义格式阅读性强,b的话跟定义变量的形式有点相似,容易混淆
数组的初始化:数组的初始化分两种方式,一种为静态初始化,直接将数组中的元素列举出来 int[] arr = {1,5,6,2,......};
一种为动态初始化,只定义数组的长度,初始化值使用系统的默认初始化值 int[] arr = new int[length];
这里的默认初始化值:整数类型的默认初始化值为0,浮点类型的为0.0,字符类型为'\u0000',布尔类型为false,引用类型为null
数组的使用:数组的使用也可以说是对数组角标的操作吧(当然这句话是不对的···),数组索引是从0开始的到length-1,超出其中的值会编译失败
提示数组角标越界。数组是一个实体,所以存储在堆内存中,具体怎么的就描述不出来了,只会用,不会说。
数组的一些操作:选择排序,冒泡排序,折半查找,等等的在Java提供的Array类中的static修饰的方法,可以创建对象调用方法,代码就不发了···
来上基础班的时候把自学的代码都删除掉了从头开始写起,现在刚上完循环,还没接触到数组,就先不写了,如果需要的话明天补上今天终于学完数组了,补上代码求分啊
自己弄的个工具类,文档注释不熟,求教版主,最后两个方法的return注释要怎么写?
································································································································································································
- /**
- * 本类是数组的工具类,包含:选择排序,冒泡排序,获取数组元素索引,获取数组最大值等等功能。
- * @author 0508
- * @version 1.0
- */
- public class ArrayTool
- {
- /**
- * 这个方法是用来给给定数组进行排序:将数组中的元素从小到大排序。
- * @param arr int类型的数组。
- */
- public static void selectSort(int[] arr)
- {
- for(int x=0;x<arr.length;x++)
- {
- for(int y=x+1;y<arr.length;y++)
- {
- temp(arr,x,y);
- }
- }
- }
- /**
- * 这个方法是用来给给定数组进行排序:将数组中的元素从小到大排序。
- * @param arr int类型的数组。
- */
- public static void bubbleSort(int[] arr)
- {
- for(int x=0;x<arr.length;x++)
- {
- for(int y=0;y<arr.length-x-1;y++)
- {
- temp(arr,y,y+1);
- }
- }
- }
- /**
- * 这个方法是用来给给定数组中指定的两个索引中的元素进行互换。
- * @param arr int类型的数组。
- * @param x int类型的整数。
- * @param y int类型的整数。
- */
- public static void temp(int[] arr,int x,int y)
- {
- if(arr[x]>arr[y])
- {
- int temp = arr[x];
- arr[x] = arr[y];
- arr[y] = temp;
- }
- }
- /**
- * 该方法用于获取给定数组中的元素中的最大值。
- * @param arr int类型的数组。
- * @return arr[maxIndex] 返回一个int类型的整数。
- */
- public static int getMax(int[] arr)
- {
- int maxIndex = 0;
- for(int x=1;x<arr.length;x++)
- {
- if(arr[x]>arr[maxIndex])
- {
- maxIndex = x;
- }
- }
- return arr[maxIndex];
- }
- /**
- * 该方法用于获取给定数组中的元素中的最大值的索引
- * @param arr int类型的数组。
- * @return maxIndex 返回一个int类型的整数。
- */
- public static int getMaxIndex(int[] arr)
- {
- int maxIndex = 0;
- for(int x=0;x<arr.length;x++)
- {
- if(arr[x]>arr[maxIndex])
- {
- maxIndex = x;
- }
- }
- return maxIndex;
- }
- /**
- * 该方法用于打印给定的数组。
- * @param arr int类型的数组。
- */
- public static void printArr(int[] arr)
- {
- System.out.print("arr={");
- for(int x=0;x<arr.length;x++)
- {
- if(x == arr.length-1)
- {
- System.out.println(arr[x]+"}");
- }
- else
- {
- System.out.print(arr[x]+",");
- }
-
- }
- }
- /**
- * 该方法用于获取给定数值在给定数组中出现的索引
- * @param arr int类型的数组。
- * @param key int类型的整数。
- * @return -1 返回-1表示输入的数值有误。
- * @return x 返回一个int类型的整数。
- */
- public static int getIndex(int[] arr,int key)
- {
- for(int x=0;x<arr.length;x++)
- {
- if(arr[x] == key)
- {
- return x;
- }
- }
- return -1;
- }
- /**
- * 该方法用于获取给定数值在给定数组中出现的索引
- * @param arr int类型的数组。
- * @param key int类型的整数。
- * @return -1 返回-1表示输入的数值有误。
- * @return mid 返回一个int类型的整数。
- */
- public static int getIndex_(int[] arr,int key)
- {
- int min = 0;
- int max = arr.length-1;
- int mid = (min+max)/2;
- for(int x=0;x<arr.length;x++)
- {
- if(arr[mid] == key)
- return mid;
- else if(arr[mid]>key)
- max = mid-1;
- else
- min = mid+1;
- if(max<min)
- return -1;
- mid = (min+max)/2;
- }
- return mid;
- }
- }
复制代码 ····················································································
二维数组:
概念:可以看成是一个一维数组不过其中的元素也是数组
定义格式:int[][] arr = new int[n][m]//n可以看成是行数,即有n个一维数组,m可以看成是列数,即每个一维数组中有m个数组元素
int[][] arr = new int[n][]//每个一维数组中的元素不确定,可以自己定义
int[][] arr = {{},{},{},······}//习惯称这个为列举法···
附一个题目,跟自己写的代码,可能很繁琐,自己优化不来了
- /*
- 0 1 2 3 4
- 1 2 3 4 5 0
- 16 17 18 19 6 1
- 15 24 25 20 7 2
- 14 23 22 21 8 3
- 13 12 11 10 9 4
- */
- import java.util.Scanner;
- class Test4
- {
- public static void main(String[] args)
- {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入需要打印的反螺旋矩阵的行数");
- while(true)
- {
- int size = sc.nextInt();
- int[][] arr = new int[size][size];
- int n=size,k=0;
- int m = (n+1)/2;
- for (int i=0;i<n;i++)
- {
- for(int j=i;j<=n-1-i;j++)
- arr[i][j] = ++k;
- for(int j=i+1;j<=n-1-i;j++)
- arr[j][n-i-1] = ++k;
- for(int j=i;j<n-1-i;j++)
- arr[n-1-i][n-2-j] = ++k;
- for(int j=i+1;j<n-i-1;j++)
- arr[n-j-1][i] = ++k;
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- System.out.print(arr[i][j] + "\t");
- System.out.println("");
- }
- }
- }
- }
复制代码
|