java基础学习_基础语法(下)02_day06总结

简介: ======================================================================================================================================================...

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

涉及到的知识点有:
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 1
10 
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         //给这个二维数组任何一行的第一列和最后一列赋值为1
38         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             //所以这里要减去1
48             //并且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         第一步:7654321
10         第二步:2109876
11         第三步:6109872
12         
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 number
44     */
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地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
10天前
|
Java
Java基础学习day05-作业
本文为Java基础学习第五天作业,通过五个案例练习类与对象的定义、构造方法、set/get方法及成员方法的应用。涵盖女友、学生、教师、手机和电影等类的设计与测试,强化面向对象编程基础。
43 2
|
10天前
|
安全 Java 编译器
Java基础学习day06
本节学习Java继承与多态核心概念:继承通过extends实现,子类可复用父类非私有成员,支持单继承与多层继承,遵循就近原则并可用super调用父类成员;方法重写需满足权限与返回值约束,常用于重写toString等。多态基于继承,实现父类引用指向子类对象,提升扩展性但无法直接访问子类独有方法,可通过instanceof安全类型转换。
74 2
|
11天前
|
存储 Java
Java基础学习day05
本节介绍Java面向对象编程基础,涵盖类与对象的概念、构造器、this关键字、封装、Javabean及static修饰符的使用。重点讲解如何通过类设计对象、实现数据封装与方法暴露,并理解静态成员的特点与应用场景。
48 2
|
11天前
|
Java
Java基础学习day04-作业
本作业包含8个Java编程案例,涵盖数组的定义与遍历、求和、最值计算、去极值求平均、元素倍增、二维数组行和计算及查找指定元素等内容,旨在巩固Java基础语法与数组操作技能。
141 1
|
13天前
|
存储 Java 索引
Java基础学习day04
本节讲解Java数组基础,包括静态与动态初始化、元素访问及遍历方法,并介绍二维数组的定义与使用,帮助理解程序数据存储方式。
51 5
|
13天前
|
算法 Java
Java基础学习day03-作业
本内容包含多个Java编程案例,涵盖条件判断、循环、数组、随机数生成、素数判断等基础算法练习,适用于巩固Java语法与逻辑思维训练。
82 6
|
13天前
|
Java
Java基础学习day02-作业
本内容包含13个Java编程练习需求,涵盖变量定义、数据类型转换、运算符使用、键盘输入及条件判断等基础语法实践,适合初学者巩固Java核心基础知识。
47 5
|
Java
Java基础学习day01-作业
通过多个Java编程案例,学习变量定义、数据类型使用及控制台输出。涵盖字符串、数值、布尔值等字面量输出,变量赋值与修改,以及实际应用场景如学生信息和商品价格变化的模拟,夯实基础语法掌握。
46 0
|
13天前
|
Java
Java基础学习day03
本节讲解Java流程控制,涵盖分支结构(if、switch)与循环结构(for、while、do-while),介绍其语法、执行流程及应用场景,并解析break、continue用法与循环嵌套,助力掌握程序逻辑控制核心。
90 0
|
13天前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
162 1
Redis-常用语法以及java互联实践案例