A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2015-5-12 22:18  /  6176 人查看  /  50 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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注释要怎么写?

································································································································································································
  1.         /**
  2.          *  本类是数组的工具类,包含:选择排序,冒泡排序,获取数组元素索引,获取数组最大值等等功能。
  3.          *        @author 0508
  4.          *        @version 1.0
  5.          */

  6. public class ArrayTool
  7. {
  8.         /**
  9.          *        这个方法是用来给给定数组进行排序:将数组中的元素从小到大排序。
  10.          *        @param        arr        int类型的数组。
  11.          */
  12.         public static void selectSort(int[] arr)
  13.         {
  14.                 for(int x=0;x<arr.length;x++)
  15.                 {
  16.                         for(int y=x+1;y<arr.length;y++)
  17.                         {
  18.                                 temp(arr,x,y);
  19.                         }
  20.                 }
  21.         }
  22.         /**
  23.          *        这个方法是用来给给定数组进行排序:将数组中的元素从小到大排序。
  24.          *        @param        arr        int类型的数组。
  25.          */
  26.         public static void bubbleSort(int[] arr)
  27.         {
  28.                 for(int x=0;x<arr.length;x++)
  29.                 {
  30.                         for(int y=0;y<arr.length-x-1;y++)
  31.                         {
  32.                                 temp(arr,y,y+1);
  33.                         }
  34.                 }
  35.         }
  36.         /**
  37.          *        这个方法是用来给给定数组中指定的两个索引中的元素进行互换。
  38.          *        @param        arr        int类型的数组。
  39.          *        @param        x        int类型的整数。
  40.          *        @param        y        int类型的整数。
  41.          */
  42.         public static void temp(int[] arr,int x,int y)
  43.         {
  44.                 if(arr[x]>arr[y])
  45.                 {
  46.                         int temp = arr[x];
  47.                         arr[x] = arr[y];
  48.                         arr[y] = temp;
  49.                 }
  50.         }
  51.         /**
  52.          *        该方法用于获取给定数组中的元素中的最大值。
  53.          *        @param        arr        int类型的数组。
  54.          *        @return        arr[maxIndex]        返回一个int类型的整数。
  55.          */
  56.         public static int getMax(int[] arr)
  57.         {
  58.                 int maxIndex = 0;
  59.                 for(int x=1;x<arr.length;x++)
  60.                 {
  61.                         if(arr[x]>arr[maxIndex])
  62.                         {
  63.                                 maxIndex = x;
  64.                         }
  65.                 }
  66.                 return arr[maxIndex];
  67.         }
  68.         /**
  69.          *        该方法用于获取给定数组中的元素中的最大值的索引
  70.          *        @param        arr        int类型的数组。
  71.          *        @return        maxIndex        返回一个int类型的整数。
  72.          */
  73.         public static int getMaxIndex(int[] arr)
  74.         {
  75.                 int maxIndex = 0;
  76.                 for(int x=0;x<arr.length;x++)
  77.                 {
  78.                         if(arr[x]>arr[maxIndex])
  79.                         {
  80.                                 maxIndex = x;       
  81.                         }
  82.                 }
  83.                 return maxIndex;
  84.         }
  85.         /**
  86.          *        该方法用于打印给定的数组。
  87.          *        @param        arr        int类型的数组。
  88.          */
  89.         public static void printArr(int[] arr)
  90.         {
  91.                 System.out.print("arr={");
  92.                 for(int x=0;x<arr.length;x++)
  93.                 {
  94.                         if(x == arr.length-1)
  95.                         {
  96.                                 System.out.println(arr[x]+"}");
  97.                         }
  98.                         else
  99.                         {
  100.                                 System.out.print(arr[x]+",");
  101.                         }
  102.                        
  103.                 }
  104.         }
  105.         /**
  106.          *        该方法用于获取给定数值在给定数组中出现的索引
  107.          *        @param        arr        int类型的数组。
  108.          *        @param        key        int类型的整数。
  109.          *        @return -1        返回-1表示输入的数值有误。
  110.          *        @return x        返回一个int类型的整数。
  111.          */
  112.         public static int getIndex(int[] arr,int key)
  113.         {
  114.                 for(int x=0;x<arr.length;x++)
  115.                 {
  116.                         if(arr[x] == key)
  117.                         {
  118.                                 return x;
  119.                         }
  120.                 }
  121.                 return -1;
  122.         }
  123.         /**
  124.          *        该方法用于获取给定数值在给定数组中出现的索引
  125.          *        @param        arr        int类型的数组。
  126.          *        @param        key        int类型的整数。
  127.          *        @return -1        返回-1表示输入的数值有误。
  128.          *        @return mid        返回一个int类型的整数。
  129.          */
  130.         public static int getIndex_(int[] arr,int key)
  131.         {
  132.                 int min = 0;
  133.                 int max = arr.length-1;
  134.                 int mid = (min+max)/2;
  135.                 for(int x=0;x<arr.length;x++)
  136.                 {
  137.                         if(arr[mid] == key)
  138.                                 return mid;
  139.                         else if(arr[mid]>key)
  140.                                 max = mid-1;
  141.                         else
  142.                                 min = mid+1;
  143.                         if(max<min)
  144.                                 return -1;
  145.                         mid = (min+max)/2;
  146.                 }
  147.                 return mid;
  148.         }
  149. }
复制代码
····················································································
二维数组:
概念:可以看成是一个一维数组不过其中的元素也是数组
定义格式:int[][] arr = new int[n][m]//n可以看成是行数,即有n个一维数组,m可以看成是列数,即每个一维数组中有m个数组元素
                  int[][] arr = new int[n][]//每个一维数组中的元素不确定,可以自己定义
                  int[][] arr = {{},{},{},······}//习惯称这个为列举法···
附一个题目,跟自己写的代码,可能很繁琐,自己优化不来了
  1. /*
  2.         0  1  2  3  4                                 

  3.         1  2  3  4  5    0
  4.         16 17 18 19        6         1
  5.         15 24 25 20 7         2
  6.         14 23 22 21 8         3
  7.         13 12 11 10 9    4
  8. */
  9. import java.util.Scanner;
  10. class Test4
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Scanner sc = new Scanner(System.in);
  15.                 System.out.println("请输入需要打印的反螺旋矩阵的行数");
  16.                 while(true)
  17.                 {
  18.                         int size = sc.nextInt();
  19.                         int[][] arr = new int[size][size];
  20.                         int n=size,k=0;
  21.                         int m = (n+1)/2;
  22.                         for (int i=0;i<n;i++)
  23.                         {
  24.                                 for(int j=i;j<=n-1-i;j++)
  25.                                         arr[i][j] = ++k;
  26.                                 for(int j=i+1;j<=n-1-i;j++)
  27.                                         arr[j][n-i-1] = ++k;
  28.                                 for(int j=i;j<n-1-i;j++)
  29.                                         arr[n-1-i][n-2-j] = ++k;
  30.                                 for(int j=i+1;j<n-i-1;j++)
  31.                                         arr[n-j-1][i] = ++k;
  32.                         }
  33.                         for (int i = 0; i < n; i++)
  34.                         {
  35.                                 for (int j = 0; j < n; j++)
  36.                                         System.out.print(arr[i][j] + "\t");
  37.                                 System.out.println("");
  38.                         }
  39.                 }
  40.         }
  41. }
复制代码




回复 使用道具 举报
V_nan 发表于 2015-5-13 22:01
笔记内容:数组的重要点
            笔记来源:毕向东Java基础视频第4天
            正文:

晕倒,更新漏洞卡了一下,直接回复了····版主,咋办,能重写吗?

点评

可以重新编辑  发表于 2015-5-14 16:56
回复 使用道具 举报
版主,补完自己总结的了,求打赏
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马