• javaSE第六天


    第六天    28

    1. 二维数组(理解)    28

    (1)就是元素为一维数组的一个数组。    28

    (2)格式:    28

    (3)案例(掌握):    28

    A:二维数组的遍历    28

    B:二维数组的求和    28

    C:杨辉三角形    29

    2. 两个思考题(理解)    30

    (1)Java中的参数传递问题    30

    (2)数据加密问题    31

    3. 面向对象(掌握)    33

    (1)面向对象    33

    (2)面向对象的思想特点    33

    (3)把大象装进冰箱(理解)    33

    (4)类与对象    33

    (5)类的定义及使用    34

    (6)案例:    34

    (7)内存图    34

    (8)Java程序的开发,设计和特征    35

    第六天

    1. 二维数组(理解)
        (1)就是元素为一维数组的一个数组。
        (2)格式:

            A:数据类型[][] 数组名 = new 数据类型[m][n];

            B:数据类型[][] 数组名 = new 数据类型[m][];

            C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};

            D:数据类型[][] 数组名 = {{...},{...},{...}};

    参数:m : 表示这个二维数组有多少个一维数组

    n : 表示每一个一维数组的元素有多少个

        (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:二维数组的求和

    /*

    * 需求:二维数组求和

    */

    class Array2Test2 {

        public static void main(String[] args) {

            // 把题目的数据用二维数组来表示

            int[][] arr = { { 22, 66, 44 }, { 77, 33, 88 }, { 25, 45, 65 }, { 11, 66, 99 } };

     

            // 定义一个求和变量sum,初始化值是0

            int sum = 0;

     

            // 通过遍历就可以得到每一个二维数组的元素。

            for (int x = 0; x < arr.length; x++) {

                for (int y = 0; y < arr[x].length; y++) {

                    // 把元素累加即可。

                    sum += arr[x][y];

                }

            }

     

            // 最后输出sum,就是结果。

            System.out.println("总和为:" + sum );

        }

    }

     

            C:杨辉三角形

    (不要想着一个循环就可以搞定,应该分为多个循环一步一步的处理)

    /*

     

        需求:打印杨辉三角形(行数可以键盘录入)

        

        1

        1 1    

        1 2 1

        1 3 3 1

        1 4 6 4 1

        1 5 10 10 5 1

     

        分析:看这种图像的规律

            A:任何一行的第一列和最后一列都是1

            B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

        

        步骤:

            A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n

             这个n的数据来自于键盘录入。

            B:给这个二维数组任何一行的第一列和最后一列赋值为1

            C:按照规律给其他元素赋值

                从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

            D:遍历这个二维数组。

    */

    import java.util.Scanner;

     

    class Array2Test3 {

        public static void main(String[] args) {

            //创建键盘录入对象

            Scanner sc = new Scanner(System.in);

            

            //这个n的数据来自于键盘录入。

            System.out.println("请输入一个数据:");

            int n = sc.nextInt();

            

            //定义二维数组

            int[][] arr = new int[n][n];

            

            //给这个二维数组任何一行的第一列和最后一列赋值为1

            for(int x=0; x<arr.length; x++) {

                arr[x][0] = 1; //任何一行第1

                arr[x][x] = 1; //任何一行的最后1

            }

            

            //按照规律给其他元素赋值

            //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

            for(int x=2; x<arr.length; x++) {

                //这里如果y<=x是有个小问题的,就是最后一列的问题

                //所以这里要减去1

                //并且y也应该从1开始,因为第一列也是有值了

                for(int y=1; y<=x-1; y++) {

                    //每一个数据是它上一行的前一列和它上一行的本列之和。

                    arr[x][y] = arr[x-1][y-1] + arr[x-1][y];

                }

            }

            

            //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似

            for(int x=0; x<arr.length; x++) {

                for(int y=0; y<=x; y++) {

                    System.out.print(arr[x][y]+" ");

                }

                System.out.println();

            }

        }

    }

     

     

    2. 两个思考题(理解)
        (1)Java中的参数传递问题

            Java中只有值传递

            基本类型:形式参数的改变不影响实际参数

            引用类型:形式参数的改变直接影响实际参数

        (2)数据加密问题

            综合的小案例(我没有做出来,是一个比较好的综合练习)

        

    /*

        某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,

        在传递过程中需要加密,加密规则如下:

            首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,

            最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,

            然后,把加密后的结果在控制台打印出来。

            

        题目要求:

            A:数据是小于8位的整数

                定义一个int类型的数据

                int number = 123456;

            B:加密规则

                a:首先将数据倒序

                    结果 654321

                b:然后将每位数字都加上5,再用和除以10的余数代替该数字

                    结果 109876

                c:最后将第一位和最后一位数字交换

                    结果 609871

            C:把加密后的结果输出在控制台

            

            通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。

            不是直接写成这个样子的:

                int[] arr = {1,2,3,4,5,6};

                

            如何把数据转成数组呢?

                A:定义一个数据

                    int number = 123456;

                B:定义一个数组,这个时候问题就来了,数组的长度是多少呢?

                    int[] arr = new int[8]; //不可能超过8

                    在赋值的时候,我用一个变量记录索引的变化。

                    定义一个索引值是0

                    int index = 0;

                C:获取每一个数据

                    int ge = number%10

                    int shi = number/10%10

                    int bai = number/10/10%10

                    

                    arr[index] = ge;

                    index++;

                    arr[index] = shi;

                    index++;

                    arr[index] = bai;

                    ...

    */

    class JiaMiDemo {

        public static void main(String[] args) {

            //定义一个数据

            int number = 123456;

            

            //定义一个数组

            int[] arr = new int[8];

            

            //把数据中每一位上的数据获取到后存储到数组中

            /*

            int index = 0;

            arr[index] = number%10; //arr[0]=6;

            index++;

            arr[index] = number/10%10; //arr[1]=5;

            index++;

            arr[index] = mumber/10/10%10; //arr[2]=4;

            */

            

            //通过观察这个代码,我们发现应该是可以通过循环改进的

            int index = 0;

            

            while(number > 0) { //number=123456,number=12345,number=1234,number=123,number=12,number=1,number=0

                arr[index] = number%10; //arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1

                index++;//index=1,index=2,index=3,index=4,index=5,index=6

                number/=10;//number=12345,number=1234,number=123,number=12,number=1,number=0

            }

            

            //然后将每位数字都加上5,再用和除以10的余数代替该数字

            for(int x=0; x<index; x++) {

                arr[x] += 5;

                arr[x] %= 10;

            }

            

            //最后将第一位和最后一位数字交换

            int temp = arr[0];

            arr[0] = arr[index-1];

            arr[index-1] = temp;

            

            //输出数据

            for(int x=0; x<index; x++) {

                System.out.print(arr[x]);

            }

            System.out.println();

        }

    }

     

    3. 面向对象(掌握)
        (1)面向对象

            面向对象是基于面向过程的编程思想

        (2)面向对象的思想特点

            A:是一种更符合我们思考习惯的思想

            B:把复杂的事情简单化

            C:让我们从执行者变成了指挥者

            

            举例:

                买电脑

                洗衣服

                做饭

                ...

                万事万物皆对象

        (3)把大象装进冰箱(理解)

            A:面向过程实现

            B:面向对象实现

            

            注意:如何让我们的操作更符合面向对象思想呢?

            A:有哪些类

            B:每个类有哪些成员

            C:类与类的关系

        (4)类与对象

            A:现实世界的事物

                属性    事物的基本描述

                行为    事物的功能

            B:Java语言中最基本的单位是类。所以,我们要用类来体现事物

            C:类

                成员变量    事物属性

                成员方法    事物行为

            D:类:是一组相关的属性和行为的集合。是一个抽象的概念。

             对象:是该类事物的具体存在,是一个具体的实例。(对象)

            

             举例:

                学生:类

                班长:对象

        (5)类的定义及使用

            A:类的定义

                成员变量    定义格式和以前一样,就是位置不同,在类中,方法外。

                成员方法    定义格式和以前一样,就是去掉了static

            B:使用类的内容

                a:创建对象? 格式

                    类名 对象名 = new 类名();

                b:如何使用成员变量和成员方法呢

                    对象名.成员变量

                    对象名.成员方法()

        (6)案例:

            A:学生类的定义和使用

            B:手机类的定义和使用

        (7)内存图

            A:一个对象的内存图

            

            B:二个对象的内存图

            

            C:三个对象的内存图

            

        (8)Java程序的开发,设计和特征

            A:开发:就是不断的创建对象,通过对象调用功能

            B:设计:就是管理和维护对象间的关系

            C:特征

                a:封装(encapsulation

                b:继承(inheritance

                c:多态(polymorphism

  • 相关阅读:
    苹果向Intel迁移的过程
    苹果向Intel迁移的过程
    UNIX发展简史
    UNIX发展简史
    不折腾的Windows+MAC双平台ADT-Bundle版本总结
    不折腾的Windows+MAC双平台ADT-Bundle版本总结
    MDICT的100G的辞典资源
    MDICT的100G的辞典资源
    android开发工具中的版本不一致问题的剖析
    android开发工具中的版本不一致问题的剖析
  • 原文地址:https://www.cnblogs.com/Prozhu/p/5874466.html
Copyright © 2020-2023  润新知