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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: ======================================================================================================================================================...

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

涉及到的知识点有:
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 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
55 1
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
40 2
|
3月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
104 43
Java学习十六—掌握注解:让编程更简单
|
1月前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
39 3
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
45 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
41 1
|
3月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
32 1
|
3月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
39 2