第六天    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 } };

 

        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

 

    分析:看这种图像的规律

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

    

    步骤:

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

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

        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];

        

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

        }

        

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

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

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

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

开始,因为第一列也是有值了

            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]+"\t");

            }

            System.out.println();

        }

    }

}

 

 

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

        Java中只有值传递。

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

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

    (2)数据加密问题

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

    

/*

位的整数,为了确保安全,

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

,再用和除以10的余数代替该数字,

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

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

        

    题目要求:

位的整数

            定义一个int类型的数据

            int number = 123456;

        B:加密规则

            a:首先将数据倒序

,再用和除以10的余数代替该数字

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

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

        

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

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

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

            

        如何把数据转成数组呢?

            A:定义一个数据

                int number = 123456;

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

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

                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

        }

        

,再用和除以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)

javaSE第六天的更多相关文章

  1. 互联网轻量级框架SSM-查缺补漏第六天【级联+延迟加载特辑】

    简言:本来这是昨天看的,但是因为想好好写一下[级联]这个东西,所以就看完之后今天来整理一下. 级联 1. 什么是级联 级联是一个数据库实体的概念.比如教师就需要存在学生与之对应,这样就有教师学生表,一 ...

  2. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)

    首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...

  3. javaSE基础07

    javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...

  4. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  5. javaSE基础05

    javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...

  6. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  7. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  8. 用大白话聊聊JavaSE -- 自定义注解入门

    注解在JavaSE中算是比较高级的一种用法了,为什么要学习注解,我想大概有以下几个原因: 1. 可以更深层次地学习Java,理解Java的思想. 2. 有了注解的基础,能够方便阅读各种框架的源码,比如 ...

  9. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

随机推荐

  1. web.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  2. 有人向我反馈了一个bug

    我是一个前端开发者,但我想这个故事对任何开发者都会引起共鸣的有人向你反馈了一个 bug. “26 楼会议室的灯亮着.它需要被熄灭.”bug 的备注里写道“你应该能在 5 分钟内搞定,只要按一下开关就好 ...

  3. SIT和UAT的区别

    SIT和UAT有什么区别?谢谢! 系统内部集成测试(System   Integration   Testing) SIT 用户验收测试(User   Acceptance Testing) UAT ...

  4. Redis使用详细教程(转)

    一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 *****************redis适用场合**************** 1.取最新N个数据的操作 2.排行榜应 ...

  5. linux下安装nginx、pcre、zlib、openssl

    1.安装nginx之前需要安装PCRE库的安装  最新下载地址   ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ tar –zxvf p ...

  6. [Java] 过滤文件夹

    package test.file; import java.io.File; import java.io.FileFilter; /** * 过滤文件夹 * @author Frost.Yen * ...

  7. webstrom配置node环境一张图片说明问题

  8. 小知识:如何解压cpio.gz文件

    第一种方法: zcat xxxx.cpio.gz | cpio -idmv 第二种方法 :第一步: gunzip xxxx.cpio.gz第二步:cpio -idmv < xxxx.cpio # ...

  9. java静态内部类

    public class StaticInnerClass {        int x=100;    static class inner{        void doitInner()     ...

  10. ubuntu更换软件源

     ubuntu更换软件源 /etc/apt/source.list 163: deb http://mirrors.163.com/ubuntu/ trusty main restricted u ...