JavaSe总结-06--Java语言基础(2)-二维数组 &面向对象(1)

来源:互联网 发布:停用移动数据总是弹出 编辑:程序博客网 时间:2024/06/05 22:32

06.01 二维数组概述和格式1的讲解

06.02 二维数组格式1的内存图解
06.03 二维数组格式2的讲解
06.04 二维数组格式2的内存图解
06.05 二维数组格式3的讲解
06.06 二维数组格式3的内存图解
06.07 二维数组练习1遍历
06.08 二维数组练习2求和
06.09 二维数组练习3杨辉三角
06.10 思考题1Java中的参数传递问题
06.11 思考题2加密问题的分析
06.12 思考题2加密问题的代码的实现
06.13 思考题2加密问题的代码改进
06.14 思想引入和面向过程思想概述
06.15 面向对象思想概述
06.16 大象装进冰箱案例
06.17 开发,设计以及特征
06.18 类与对象
06.19 类的定义概述
06.20 学生类的定义
06.21 手机类的定义
06.22 学生类的使用
06.23 手机类的使用
06.24 一个对象的内存图
06.25 二个对象的内存图
06.26 三个对象的内存图


06.01 二维数组概述和格式1的讲解

    二维数组概述:二维数组其实就是一个元素为一维数组的数组

    格式1:数据类型[][] 变量名 = new 数据类型[m][n];

         m 表示这个二维数组有多少个一维数组,n 表示每一个一维数组的元素个数

    例:int[][] arr = new int[3][2];

    定义了一个二维数组arr

    这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]

    每个一维数组有2个元素,可以通过arr[m][n]来获取,表示获取第m+1个一维数组的第n+1个元素 

    格式1还可以写成int arr[][]; int[] arr[]; 但是都不建议

    注意:

    int x,y;     表示同时定义两个int型的变量x、y

    int[] x,y[]; 表示定义了一个一维数组x,一个二维数组y

 1 //定义一个二维数组,有3个一维数组,每个 2 //一维数组有2个元素 3 int[][] arr = new int[3][2]; 4  5 //输出二维数组名称 6 System.out.println(arr); //[[I@1175422 7  8 //输出二维数组的第1个元素一维数组的名称 9 System.out.println(arr[0]); //[I@949f6910 11 //输出二维数组的元素12 System.out.println(arr[0][0]); //0

06.02 二维数组格式1的内存图解

 

06.03 二维数组格式2的讲解

    格式2:数据类型[][] 变量名 = new 数据类型[m][];

    m表示这个二维数组有多少个一维数组,但没有直接给出一维数组的元素个数,可以动态的给出

1 int[][] arr = new int[3][]; //定义一个有3个一维数组的二维数组2 arr[0] = new int[2]; //第1个一维数组有2个元素3 arr[1] = new int[3]; //第2个一维数组有3个元素4 arr[2] = new int[1]; //第3个一维数组有1个元素 

例:

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[][] arr = new int[3][]; 6  7         System.out.println(arr); //[[I@1175422 8         System.out.println(arr[0]); //null 9 10         //动态的为每一个一维数组分配空间11         arr[0] = new int[2];12         arr[1] = new int[3];13         arr[2] = new int[1];14 15         System.out.println(arr[0]); //[I@949f6916         System.out.println(arr[0][0]); //017 18         arr[1][0] = 100;19         arr[2][0] = 200;20     }21 }

 

06.04 二维数组格式2的内存图解

06.05 二维数组格式3的讲解

    格式3:数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},{元素...}};

    简化版格式:数据类型[][] 变量名 = {{元素...},{元素...},{元素...}};

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

06.06 二维数组格式3的内存图解

06.07 二维数组练习1遍历

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; 6         //外循环控制的是二维数组的长度,其实就是一维数组的个数 7         for(int i = 0;i < arr.length;i++) 8         { 9             //内循环控制的一维数组的长度10             for(int j = 0;j < arr[i].length;j++)11             {12                 System.out.print(arr[i][j]+" ");13             }14             System.out.println();15         }16     }17 }

 06.08 二维数组练习2求和

某公司按照季度和月份统计的数据如下:单位(万元)

第一季度:22,67,43

第二季度:77,33,88

第三季度:25,43,65

第四季度:11,66,99

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         //将题目的数据用二维数据表示 6         int[][] arr = {{22,67,43},{77,33,88},{25,43,65},{11,66,99}}; 7  8         //定义一个求和变量 9         int sum = 0;10         //遍历二维数组11         for(int i = 0;i < arr.length;i++)12         {13             System.out.print("第"+(i+1)+"季度分别为:");14             for(int j = 0;j < arr[i].length;j++)15             {16                 System.out.print(arr[i][j]+"万 ");17                 sum += arr[i][j];18             }19             System.out.println();20         }21         System.out.println("总和为:"+sum+"万元");22     }23

运行结果:

第1季度分别为:22万 67万 43万第2季度分别为:77万 33万 88万第3季度分别为:25万 43万 65万第4季度分别为:11万 66万 99万总和为:639万元

06.09 二维数组练习3杨辉三角

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

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Scanner sc = new Scanner(System.in); 6         System.out.println("请输入一个数:"); 7         int n = sc.nextInt(); 8  9         //根据键盘录入的数据创建一个二维数组10         int[][] arr = new int[n][n];11 12         //给二维数组的任何一行的第一列和最后一列赋值为113         for(int i = 0;i < arr.length;i++)14         {15             arr[i][0] = 1; //任何一行第一列16             arr[i][i] = 1; //任何一行最后一列17         }18 19         for(int i = 2;i < arr.length;i++)20         {21             for(int j = 1;j <= i-1; j++)22             {23                 //每一个数据是它上一行的前一列和它上一行的本列之和24                 arr[i][j] = arr[i-1][j-1] + arr[i-1][j];25             }26         }27 28         //遍历二维数组29         for(int i = 0;i < arr.length;i++)30         {31             for(int j = 0;j <= i;j++)32             {33                 System.out.print(arr[i][j]+"\t");34             }35             System.out.println();36         }37     }38 }

 06.10 思考题1Java中的参数传递问题

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int a = 10; 6         int b = 20; 7         System.out.println("a:"+a+",b:"+b); //a:10,b:20 8         change(a,b); 9         System.out.println("a:"+a+",b:"+b); //a:10,b:2010 11         int[] arr = {1,2,3,4,5};12         change(arr);13         System.out.println(arr[1]); //414     }15     public static void change(int a,int b)  16     {17         System.out.println("a:"+a+",b:"+b); //a:10,b:2018         a = b;19         b = a + b;20         System.out.println("a:"+a+",b:"+b); //a:20,b:4021     }22 23     public static void change(int[] arr)24     {25         for(int x=0; x<arr.length; x++)26         {27             if(arr[x]%2==0)28             {29                 arr[x]*=2;30             }31         }32     }33 }

    Java中的参数传递问题:

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

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

06.11 思考题2加密问题的分析

   数据加密问题

    某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:

    首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。

如输入123456  输出609871

分析:

1.数据是小于8位的整数,可以定义一个int类型的数据

2.加密规则

a:首先将数据倒序

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

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

3.把加密后的结果输出在控制台

     

通过分析,需要将数据变成数组        

1.定义一个数据

2.定义一个数组,int[] arr = new int[8]; //不可能超过8

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

3.获取每一个数据

int ge = number%10

int shi = number/10%10

int bai = number/100%10

06.12 思考题2加密问题的代码的实现

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         //定义一个数据 6         int num = 123456; 7         //定义一个数组 8         int[] arr = new int[8]; 9         //获取数据中的每一位数据存储到数组中10         int index = 0;11         while(num > 0)12         {13             arr[index] = num % 10;14             index++;15             num /= 10;16         }17 18         for(int i = 0;i < index ;i++)19         {20             arr[i] += 5;21             arr[i] %= 10;22         }23 24         int temp = arr[0];25         arr[0] = arr[index - 1];26         arr[index - 1] = temp;27 28         for(int i = 0;i < index;i++)29         {30             System.out.print(arr[i]+" ");31         }32         System.out.println();33     }34 }

06.13 思考题2加密问题的代码改进

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Scanner sc = new Scanner(System.in); 6         System.out.print("原始数据:"); 7         int num = sc.nextInt(); 8         //定义一个数组 9         int[] arr = new int[8];10         //获取数据中的每一位数据存储到数组中11         int index = 0;12         while(num > 0)13         {14             arr[index] = num % 10;15             index++;16             num /= 10;17         }18 19         for(int i = 0;i < index ;i++)20         {21             arr[i] += 5;22             arr[i] %= 10;23         }24 25         int temp = arr[0];26         arr[0] = arr[index - 1];27         arr[index - 1] = temp;28 29         System.out.print("加密数据:");30         for(int i = 0;i < index;i++)31         {32             System.out.print(arr[i]);33         }34         System.out.println();35     }36 }

06.14 思想引入和面向过程思想概述

    通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类来封装这多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。这就是面向对象思想的编程方式。

    面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。

    面向过程的代表语言:C语言

06.15 面向对象思想概述

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

   面向过程:对于面向过程思想,强调的是过程(动作)。例如C语言就是面向过程语言

    面向对象:对于面向对象思想,强调的是对象(实体)。例如C++ 、Java 、C#就是面向对象的语言

    面向对象思想特点:

        1.面向对象是一种常见的思想,符合人们的思考习惯

        2.面向对象的出现,将复杂的问题简单化

        3.面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者

06.16 大象装进冰箱案例

    把大象装进冰箱

    面向过程:动作

        1:打开冰箱门

        2:装进大象

        3:关闭冰箱门

    面向对象:在用面向对象思想体现的时候,给出一个三句话使用规则,让我们更符合面向对象思想

        1.有哪些类

        2.每个类有哪些东西

        3.类与类直接的关系是什么

    把大象装进冰箱的分析(如何分析有哪些类呢?UML。名词提取法。)

        1.有哪些类:大象、冰箱、Demo

        2.每个类有哪些东西:[大象:进去]、[冰箱:开门关门]、[Demo:main方法]

        3.类与类直接的关系:Demo中使用大象和冰箱类的功能

06.17 开发,设计以及特征

    面向对象开发:就是不断的创建对象,使用对象,指挥对象做事情。

    面向对象设计:就是在管理和维护对象之间的关系。

    面向对象特征:

        封装(encapsulation)

        继承(inheritance)

        多态(polymorphism)

06.18 类与对象

如何表示一个现实世界事物:

属性就是该事物的描述信息

行为就是该事物能够做什么

我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现

事物的属性与行为在类中对应成员变量与成员方法

 

类是一组相关的属性和行为的集合

对象是该类事物的具体体现

类是抽象的,概念的,代表一类事物,例如人类、猫类

对象是具体的,实际的,代表一个具体的事物

类是事物的描述,对象是该类事物的实例,在java中通过new创建

06.19 类的定义概述

类与对象的关系图:

上图中图纸就是类,每一个汽车就是对象

 

现实世界的事物

属性人的身高,体重等

行为人可以学习,吃饭等

 

Java中用class描述事物也是如此

成员变量就是事物的属性

成员方法就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法)

06.20 学生类的定义

如何定义学生类

按照事物到类的过程一步步分析

学生事物:

       属性:姓名,年龄,地址...

       行为:学习,吃饭,睡觉...

把事物要转换为对应的类:

学生类:

      成员变量:姓名,年龄,地址...

      成员方法:学习,吃饭,睡觉...

 1 class Student  2 { 3     //定义变量 4     //姓名 5     String name; 6     //年龄 7     int age; 8     //地址 9     String address;10     11     //定义方法12     //学习的方法13     public void study() 14     {15         System.out.println("学生爱学习");16     }17     18     //吃饭的方法19     public void eat() 20     {21         System.out.println("学习饿了,要吃饭");22     }23     24     //睡觉的方法25     public void sleep() 26     {27         System.out.println("学习累了,要睡觉");28     }29 }

06.21 手机类的定义

手机事物:

      属性:品牌,价格,颜色...

      行为:打电话,发短信,玩游戏...

手机类:

      成员变量:品牌,价格,颜色

      成员方法:打电话,发短信,玩游戏

 1 class Phone  2 { 3     //品牌 4     String brand; 5     //价格 6     int price; 7     //颜色 8     String color; 9     10     //打电话的方法11     public void call(String name) 12     {13         System.out.println("给"+name+"打电话");14     }15     16     //发短信的方法17     public void sendMessage() 18     {19         System.out.println("群发短信");20     }21     22     //玩游戏的方法23     public void playGame()24     {25         System.out.println("玩游戏");26     }27 }

06.22 学生类的使用

创建对象:类名对象名 = new 类名();

使用成员变量:对象名.成员变量

使用成员方法:对象名.成员方法

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Student s = new Student(); 6         System.out.println(s.name+".."+s.age+".."+s.address); 7         //给成员变量赋值 8         s.name = "小明"; 9         s.age = 25;10         s.address = "上海";11 12         System.out.println(s.name+".."+s.age+".."+s.address);13         //调用方法14         s.study();15     }16 }17 18 class Student 19 {20     //定义变量21     //姓名22     String name;23     //年龄24     int age;25     //地址26     String address;27     28     //定义方法29     //学习的方法30     public void study() 31     {32         System.out.println("学生爱学习");33     }34     35     //吃饭的方法36     public void eat() 37     {38         System.out.println("学习饿了,要吃饭");39     }40     41     //睡觉的方法42     public void sleep() 43     {44         System.out.println("学习累了,要睡觉");45     }46 }

运行结果:

null..0..null小明..25..上海学生爱学习

06.23 手机类的使用

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Phone p = new Phone(); 6         System.out.println(p.brand+"..."+p.price+"..."+p.color); 7         //给成员变量赋值 8         p.brand = "诺基亚"; 9         p.price = 450;10         p.color = "黑色";11         System.out.println(p.brand+"..."+p.price+"..."+p.color);12 13         //调用成员方法14         p.call("小明");15     }16 }17 18 class Phone 19 {20     //品牌21     String brand;22     //价格23     int price;24     //颜色25     String color;26     27     //打电话的方法28     public void call(String name) 29     {30         System.out.println("给"+name+"打电话");31     }32     33     //发短信的方法34     public void sendMessage() 35     {36         System.out.println("群发短信");37     }38     39     //玩游戏的方法40     public void playGame()41     {42         System.out.println("玩游戏");43     }44 }

 运行结果:

null...0...null诺基亚...450...黑色给小明打电话

06.24 一个对象的内存图

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Phone p = new Phone(); 6         System.out.println(p.brand+"..."+p.price+"..."+p.color); 7  8         p.brand = "诺基亚"; 9         p.price = 450;10         p.color = "黑色";11         System.out.println(p.brand+"..."+p.price+"..."+p.color);12 13         p.call("小明");14     }15 }16 17 class Phone 18 {19     String brand;20     int price;21     String color;22     23     public void call(String name) 24     {25         System.out.println("给"+name+"打电话");26     }27 }

 

06.25 二个对象的内存图

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Phone p1 = new Phone(); 6         p1.brand = "诺基亚"; 7         p1.price = 450; 8         p1.color = "黑色"; 9         System.out.println(p1.brand+"..."+p1.price+"..."+p1.color);10         p1.call("小明");11 12         Phone p2 = new Phone();13         p2.brand = "小米";14         p2.price = 1699;15         p2.color = "白色";16         System.out.println(p2.brand+"..."+p2.price+"..."+p2.color);17 18         p2.call("旺财");19     }20 }21 22 class Phone 23 {24     String brand;25     int price;26     String color;27     28     public void call(String name) 29     {30         System.out.println("给"+name+"打电话");31     }32 }

06.26 三个对象的内存图

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         Phone p1 = new Phone(); 6         p1.brand = "诺基亚"; 7         p1.price = 450; 8         p1.color = "黑色"; 9         System.out.println(p1.brand+"..."+p1.price+"..."+p1.color);10 11         Phone p2 = new Phone();12         p2.brand = "小米";13         p2.price = 1699;14         p2.color = "白色";15         System.out.println(p2.brand+"..."+p2.price+"..."+p2.color);16 17         Phone p3 = p1;18         System.out.println(p3.brand+"..."+p3.price+"..."+p3.color);19         p3.brand = "魅族";20         p3.price = 2999;21         p3.color = "金色";22         System.out.println(p1.brand+"..."+p1.price+"..."+p1.color);23     }24 }25 26 class Phone 27 {28     String brand;29     int price;30     String color;31     32     public void call(String name) 33     {34         System.out.println("给"+name+"打电话");35     }36 }

0 0
原创粉丝点击