JavaSE学习总结第06天_Java语言基础2 & 面向对象1

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); //[[[email protected]
 7
 8 //输出二维数组的第1个元素一维数组的名称
 9 System.out.println(arr[0]); //[[email protected]
10
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); //[[[email protected]
 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]); //[[email protected]
16         System.out.println(arr[0][0]); //0
17
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         //给二维数组的任何一行的第一列和最后一列赋值为1
13         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:20
10
11         int[] arr = {1,2,3,4,5};
12         change(arr);
13         System.out.println(arr[1]); //4
14     }
15     public static void change(int a,int b)
16     {
17         System.out.println("a:"+a+",b:"+b); //a:10,b:20
18         a = b;
19         b = a + b;
20         System.out.println("a:"+a+",b:"+b); //a:20,b:40
21     }
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 }

时间: 2024-08-07 21:21:00

JavaSE学习总结第06天_Java语言基础2 & 面向对象1的相关文章

黑马程序员_JavaSE学习总结第06天_Java语言基础2 &amp; 面向对象1

------- android培训.java培训.期待与您交流! ----------  06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数 例:int[][] arr = new int[3][2]; 定义了一个二维数组arr 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] 每个一维数组

JavaSE学习总结第05天_Java语言基础1

05.01 方法概述和格式说明 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义,函数在Java中被称为方法 格式: 修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2...) {    函数体;    return 返回值; }   方法格式解释: 修饰符:后面会详细介绍.目前public static 返回值类型:用于限定返回值的数据类型 方法名:一个名称,方便我们调用方法 参数类型:限定调用方法时传入参数的数据类型 参数名:是一个变量,接收调用方法时传入的参数

JavaSE学习总结(二)——Java语言基础

目录 一.Java程序预览 1.1.Hello World 1.2.Eclipse使用 1.2.1.项目位置 1.2.2.重置窗口布局 1.2.3.设置字体 1.2.4.修改控制台字体 1.2.4.项目的导入与保存 1.2.5.修改快捷键 1.2.6.重命名 1.2.7.编码 1.2.8.设置JDK本地JavaDOC API路径及源码路径 1.3.快捷键 1.3.1.Eclipse快捷键大全 1.4.调试(debug) 1.4.1.设置断点 1.4.2.启动调试 1.4.3.执行调试 二.类型

Java学习总结(二)----Java语言基础

1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,int, long ,float,double,char,boolean,void 用于定义数据类型值的关键字 true,false,null 用于定义流程控制的关键字 If,else,switch,case,default, while,do,for,break,continue,return 用于

JavaSE学习总结第01天_Java概述

01.01 计算机概述 计算机(Computer):全称电子计算机,俗称电脑. 是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 由硬件和软件所组成,没有安装任何软件的计算机称为裸机. 常见的形式有台式计算机.笔记本计算机.大型计算机等. 01.02 计算机硬件和软件概述 计算机硬件(Computer Hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称. 这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础. 计算机通常由C

JavaSE学习总结第03天_Java基础语法2

03.01 数据类型中补充的几个小问题 1:在定义Long或者Float类型变量的时候,要加L或者f.   整数默认是int类型,浮点数默认是double.   byte,short在定义的时候,他们接收的其实是一个int类型的值.  2:数据类型转换之默认转换:byte,short,char→int→long→float→double    为什么占用8个字节的long默认转换为4个字节的float?    A:它们底层的存储结构不同.    B:float表示的数据范围比long的范围要大

JavaSE学习总结第02天_Java基础语法1

02.01 关键字的概述和使用 关键字概述:被Java语言赋予特定含义的单词 关键字特点:组成关键字的字母全部小写 关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 保留字:在JDK的新版本中可能提升为关键字 02.02 标识符的概述和组成规则 标识符概述:就是给类,接口,方法,变量等起名字时使用的字符序列 组成规则:英文大小写字母.数字字符.$和_ 注意事项: 1.不能以数字开头 2.不能是Java中

JavaSE学习总结第04天_Java基础语法3

04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) {    case 值1:语句体1;break;    case 值2:语句体2;break;    ......    default:语句体n+1;break; } 格式解释: switch表示这是switch语句 表达式的取值:byte,short,int,char,JDK5以后可以是枚举类型,JDK7以后可以是String类型 case后面跟的是要和表达式进行比较的值 语句体部分可以是一

JavaSE学习(五):数组及其基础操作

第一节 数组 1.1 数组定义 将具有相同数据类型的数据集中再一个容器中,这个容器我们称之为数组.数组也是引用数据类型中的一种. 1.2 数组的声明的方式 1.方式一: 数据类型[] 数组名 = new 数据类型[数组的长度]; 2.方式二: 数据类型[] 数组名 = {数值1,数值2...}; 3.方式三: 数据类型[] 数组名 = new 数据类型[] {数值1,数值2....}; 1.3 Java中的三种注释方式 方式一:单行注释 //   解释当前行代码 方式二:多行注释 /*注释内容*