zoukankan      html  css  js  c++  java
  • Java基础第6天+二维数组(遍历、求和、逆序、索引)、面向对象思想(类、对象、Java程序的开发,设计和特征)

    1:二维数组(理解)

    (1)元素是一维数组的数组。

    (2)格式:

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

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

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

    这一次没有直接给出一维数组的元素个数,可以动态的给出。

    举例:

    int[][] arr = new int[3][];

    arr[0] = new int[2];

    arr[1] = new int[3]

    arr[2] = new int[1];

         

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

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

    举例:

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

         

    注意:

    A:以下格式也可以表示二维数组

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

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

    B:注意下面定义的区别

    int x;

    int y;

    int x,y;

    int[] x;

    int[] y[];

    int[] x,y[];

    (3)案例(掌握):

    A:二维数组的遍历

    /*

    需求:遍历二维数组

    两个明确:

    返回值类型:void

    参数列表:int[][] arr

    */

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

    //定义一个求和变量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<arr[x].length; y++) {

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

    }

    System.out.println();

    }

    */

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

    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)数据加密问题

    综合的小案例。

    import java.util.Scanner;

    class JiaMiDemo2 {

    public static void main(String[] args) {

    //创建键盘录入对象

    Scanner sc = new Scanner(System.in);

    //请输入一个数据

    System.out.println("请输入一个数据(小于8)");

    int number = sc.nextInt();

    //写功能实现把number进行加密

    //调用

    String result = jiaMi(number);

    System.out.println("加密后的结果是:"+result);

    }

    /*

    需求:写一个功能,把数据number实现加密。

    两个明确:

    返回值类型:String 做一个字符串的拼接。

    参数列表:int number

    */

    public static String jiaMi(int number) {

    //定义数组

    int[] arr = new int[8];

    //定义索引

    int index = 0;

    //number中的数据想办法放到数组中

    while(number > 0) {

    arr[index] = number%10;

    index++;

    number /= 10;

    }

    //把每个数据加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;

    //把数组的元素拼接成一个字符串返回

    //定义一个空内容字符串

    String s = "";

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

    s += arr[x];

    }

    return s;

    }

    }

    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:封装

    b:继承

    c:多态

  • 相关阅读:
    python---模块与包
    python---迭代器与生成器
    python---装饰器
    Python---函数
    Python---文件操作
    Python---数据类型
    浅谈UBUNTU
    java 键盘输入多种方法
    动态规划解最长公共子序列问题
    线段树
  • 原文地址:https://www.cnblogs.com/zyk2019/p/11332676.html
Copyright © 2011-2022 走看看