1:二维数组(理解)
(1)元素是一维数组的数组。
(2)格式:
A,格式一:数据类型[][] 数组名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
以下格式也可以表示二维数组:不推荐这样去使用
数据类型 数组名[][] = new 数据类型[m][n];
数据类型[] 数组名[] = new 数据类型[m][n];
B,格式二:数据类型[][] 数组名 = new 数据类型[m][];
C,格式三:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
D,格式四:数据类型[][] 数组名 = {{...},{...},{...}};
(3)案例(掌握):
A:二维数组的遍历
B:二维数组的求和
C:杨辉三角形
2:两个思考题(理解)
(1)Java中的参数传递问题
Java中只有值传递。
基本类型:形式参数的改变不影响实际参数,基本类型传递的是实体值
引用类型:形式参数的改变直接影响实际参数,因为引用传递的是地址值,所以能够改变内存空间的内容,读取时,能读取已改变的值。
例子:
class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a:10,b:20
change(a,b);//执行完后从内存上消失,整个操作都在栈里,没有返回值,所以会出现没有传递值回main的现象
System.out.println("a:"+a+",b:"+b); //??? a:10,b:20
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //??? 4
}
public static void change(int a,int b) { //a=10,b=20
System.out.println("a:"+a+",b:"+b); //a:10,b:20
a = b; //a=20
b = a + b; //b=40
System.out.println("a:"+a+",b:"+b); //a:20,b:40
}
public static void change(int[] arr) { //arr={1,2,3,4,5};
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
//arr={1,4,3,8,5};
}
}
相关图解:
(2)数据加密问题
综合的小案例。
3:面向对象(掌握)
(1)面向对象
面向对象是基于面向过程的编程思想
(2)面向对象的思想特点
A:是一种更符合我们思考习惯的思想
B:把复杂的事情简单化
C:让我们从执行者变成了指挥者
举例:
买电脑
洗衣服
做饭
...
万事万物皆对象
(3)把大象装进冰箱(理解)
A:面向过程实现
B:面向对象实现
注意:如何让我们的操作更符合面向对象思想呢?
A:有哪些类
B:每个类有哪些成员
C:类与类的关系
(4)类与对象 (记住:使用对象一定要判断它是否为空,否则会报空指针异常)
A:现实世界的事物
属性 事物的基本描述
行为 事物的功能
B:Java语言中最基本的单位是类。所以,我们要用类来体现事物
C:类
成员变量 事物属性
成员方法 事物行为
D:类:是一组相关的属性和行为的集合。是一个抽象的概念。
对象:是该类事物的具体存在,是一个具体的实例。(对象)
E:一个类的初始化过程
成员变量进行初始化
默认初始化
显示初始化
构造方法初始化 用参数去调用构造函数就是显式初始化,没有参数就是默认初始化,表现为直接声明对象和数组,构造方法初始化 就是在构造方法处为成员变量赋值。
举例:
学生:类
班长:对象
(5)类的定义及使用
A:类的定义
成员变量 定义格式和以前一样,就是位置不同,在类中,方法外。
成员方法 定义格式和以前一样,就是去掉了static。
B:使用类的内容
a:创建对象? 格式
类名 对象名 = new 类名();
b:如何使用成员变量和成员方法呢
对象名.成员变量
对象名.成员方法()
(6)案例:
A:学生类的定义和使用
B:手机类的定义和使用
(7)内存图
A:一个对象的内存图
最后就是main方法的在栈中消失。
B:二个对象的内存图
C:三个对象的内存图
有一点需要注意,类的成员方法是公用的,而成员变量会每new一次,会生成一份备份到堆中,直到整个类作用域消失被收回,还有调用成员方法时,会把方法放到栈中执行,执行完之后就丢弃。
(8)Java程序的开发,设计和特征
A:开发:就是不断的创建对象,通过对象调用功能
B:设计:就是管理和维护对象间的关系
C:特征
a:封装 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
b:继承 通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
c:多态 在面向对象语言中,接口或抽象类的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。允许将子类类型的指针赋值给父类类型的指针。