博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础学习_基础语法(下)02_day06总结
阅读量:6273 次
发布时间:2019-06-22

本文共 7035 字,大约阅读时间需要 23 分钟。

=============================================================================

=============================================================================

涉及到的知识点有:

1:二维数组(理解)
  (1)二维数组的定义
  (2)二维数组的格式
    格式一:(自动动态初始化)
    格式二:(半自动动态初始化)
    格式三:(静态初始化)
    面试题:
  (3)二维数组的案例(掌握)
    A:二维数组的遍历
    B:二维数组的求和
    C:打印杨辉三角形(行数可以键盘录入)
2:两个思考题(理解)
  (1)Java中的参数传递问题及图解。
  (2)数据加密问题。

=============================================================================

=============================================================================
1:二维数组(理解)
  (1)二维数组的定义:元素是一维数组的数组。
  (2)二维数组的格式:
    格式一:(自动动态初始化)
      数据类型[][] 数组名 = new 数据类型[m][n];   //常用这个格式。
      数据类型 数组名[][] = new 数据类型[m][n];   //该格式可以,但是很少用了。
      数据类型[] 数组名[] = new 数据类型[m][n];   //该格式也可以,但是很少用了。
      m表示这个二维数组有多少个一维数组。
      n表示每一个一维数组的元素个数。
      举例:
        int[][] arr = new int[3][2];

        定义了一个二维数组arr。

        这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]。
        每个一维数组有2个元素,可以通过arr[m][n]来获取。
        即:    arr[m][n] 表示获取第m+1个一维数组的第n+1个元素。
        例如:arr[1][2] 表示获取第2个一维数组的第3个元素。
如下如图所示01:

---------------------------------------

    格式二:(半自动动态初始化)
      数据类型[][] 数组名 = new 数据类型[m][];
      m表示这个二维数组有多少个一维数组。
      这一次没有直接给出一维数组的元素个数,可以动态的给出。
      举例:
        int[][] arr = new int[3][];
        arr[0] = new int[2];
        arr[1] = new int[3];
        arr[2] = new int[1];
如下如图所示02:

---------------------------------------

    格式三:(静态初始化)
      数据类型[][] 数组名 = new 数据类型[][]{ {...}, {...}, {...} };
      数据类型[][] 数组名 = { {...}, {...}, {...} };   格式三的简化版格式
    举例:
      int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
      int[][] arr = { { 1, 2, 3 }, { 4, 5 }, { 6 } };
如下如图所示03:

    面试题:
      下面定义的区别:
      int x, y; //定义了1个int类型的变量x,同时也定义了1个int类型的变量y。
      //等价于
      int x;
      int y;
      ---------------------------------------
      int[] x, y[]; //定义了1个int类型的一维数组x,同时也定义了1个int类型的二维数组y。
      //等价于
      int[] x;
      int[] y[];

  (3)二维数组的案例(掌握):

    A:二维数组的遍历
      外循环控制的是二维数组的长度,其实就是一维数组的个数。
      内循环控制的是一维数组的长度。
      public static void printArray2(int[][] arr) {
        for(int x = 0; x < arr.length; x++) {
          for(int y = 0; y < arr[x].length; y++) {
            System.out.print(arr[x][y]+" ");
          }
          System.out.println();
        }
      }
    B:二维数组的求和
      int sum = 0;
      for(int x = 0; x < arr.length; x++) {
        for(int y = 0; y < arr[x].length; y++) {
          sum += arr[x][y];
        }
      }
    C:打印杨辉三角形(行数可以键盘录入)

1 /* 2     需求:打印杨辉三角形(行数可以键盘录入) 3      4     1 5     1 1     6     1 2 1 7     1 3 3 1 8     1 4 6 4 1  9     1 5 10 10 5 110 11     分析:看这种图像的规律:12         A:任何一行的第一列和最后一列都是1。13         B:从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。14     15     步骤:16         A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。17             这个n的数据来自于键盘录入。18         B:给这个二维数组任何一行的第一列和最后一列赋值为1。19         C:按照规律给其他元素赋值:20              从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。21         D:遍历这个二维数组。22 */23 import java.util.Scanner;24 25 class Array2Test3 {26     public static void main(String[] args) {27         //创建键盘录入对象。28         Scanner sc = new Scanner(System.in);29         30         //这个n的数据来自于键盘录入。31         System.out.println("请输入一个数据:");32         int n = sc.nextInt();33         34         //定义二维数组35         int[][] arr = new int[n][n];36         37         //给这个二维数组任何一行的第一列和最后一列赋值为138         for(int x = 0; x < arr.length; x++) {39             arr[x][0] = 1; //任何一行第一列40             arr[x][x] = 1; //任何一行的最后一列41         }42         43         //按照规律给其他元素赋值44         //从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。45         for(int x = 2; x < arr.length; x++) {46             //这里如果 y <= x 是有个小问题的,就是最后一列的问题,因为最后一列已经给过值了。47             //所以这里要减去148             //并且y也应该从1开始,因为第一列也给过值了。49             for(int y = 1; y <= x - 1; y++) {50                 //除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。51                 arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];52             }53         }54         55         //遍历这个二维数组。56         /*57         for(int x = 0; x < arr.length; x++) {58             for(int y = 0; y < arr[x].length; y++) {59                 System.out.print(arr[x][y]+"\t");60             }61             System.out.println();62         }63         */64         //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似。65         for(int x = 0; x < arr.length; x++) {66             for(int y = 0; y <= x; y++) {67                 System.out.print(arr[x][y]+"\t");68             }69             System.out.println();70         }71     }72 }

-----------------------------------------------------------------------------

2:两个思考题(理解)
  (1)Java中的参数传递问题及图解。
    基本类型:形式参数的改变对实际参数没有影响。
    引用类型:形式参数的改变直接影响实际参数。
    基本类型:传递的是基本类型的数据值。
    引用类型:传递的是地址值。
    小结:不管怎么说,都是值,即在Java中,只有值传递。

如下图所示04:

  (2)数据加密问题。

    综合的小案例
    int index = 0;
    arr[index] = number % 10 = number / 1 % 10;
    index++;
    arr[index] = number / 10 % 10 = number / 10 % 10;
    index++;
    arr[index] = number / 10 / 10 % 10 = number /100 % 10;
    ......
    ---------------------------------------
    int index = 0;
    while (number > 0) {
      arr[index] = number % 10;
      number /= 10;
    }

示例代码如下:

1 /* 2     把刚才的代码改进一下: 3         A:把数据改进为键盘录入 4         B:把代码改进为方法实现 5          6          7         另一个数据的测试: 8         number:1234567 9         第一步:765432110         第二步:210987611         第三步:610987212         13     知识点:14         变量15         数据类型16         运算符17         键盘录入18         语句19         方法20         数组21 */22 import java.util.Scanner;23 24 class JiaMiDemo2 {25     public static void main(String[] args) {26         //创建键盘录入对象27         Scanner sc = new Scanner(System.in);28         29         //请输入一个数据30         System.out.println("请输入一个数据(小于8位):");31         int number = sc.nextInt();32         33         //写功能实现把number进行加密34         //调用35         String result = jiaMi(number);36         System.out.println("加密后的结果是:"+result);37     }38     39     /*40         需求:写一个功能,把数据number实现加密。41         两个明确:42             返回值类型:String     为了做一个字符串的拼接。43             参数列表:int number44     */45     public static String jiaMi(int number) {46         //定义数组47         int[] arr = new int[8];48         49         //定义索引50         int index = 0;51         52         //把number中的数据想办法放到数组中53         while(number > 0) {54             arr[index] = number % 10;55             index++;56             number /= 10;57         }58         59         //把每个数据加5,然后对10取得余数60         for(int x = 0; x < index; x++) {61             arr[x] += 5;62             arr[x] %= 10;63         }64         65         //把第一位和最后一位交换66         int temp = arr[0];67         arr[0] = arr[index - 1];68         arr[index - 1] = temp;69         70         //把数组的元素拼接成一个字符串返回71         //定义一个空内容字符串72         String s = "";73         74         for(int x = 0; x < index; x++) {75             s += arr[x];76         }77         78         return s;79     }80 }

=============================================================================

我的GitHub地址:
我的博客园地址:
我的蚂蚁笔记博客地址:
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
你可能感兴趣的文章
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
ios runtime基础知识
查看>>
正文提取算法
查看>>
Arcgis Engine(ae)接口详解(8):临时元素(element)
查看>>
大数据技术核心之ETL
查看>>
轻松学PHP
查看>>
Android android.support.design包
查看>>
CheckBox:屏蔽setChecked方法对OnCheckedChangeListener的影
查看>>
java线程池
查看>>
UI面试内容
查看>>
Linux之RPM详解
查看>>
Windows Azure 常见问题及测试题
查看>>
flex DateChooser
查看>>
天天晚上打车--我对滴滴打车的想法
查看>>
由于MTU值设置不当造成的某些网站无法登录解决
查看>>
线程池
查看>>
聊聊高并发之隔离术
查看>>
JenKins 构建Github项目
查看>>
MySQL中from_unixtime与unix_timestamp差别
查看>>