一、方法
01-方法
一个方法一个功能,main()函数保持整洁
02-定义与调用
Java只有值传递
作业:值传递与引用传递区别
?调用的两种方法
03-方法的重载
方法名称相同,形参不同(个数、类型、顺序);
返回值可以不同。
04-命令行传参
args[ ]
javac
05-可变参数
JDK 1.5后可用
一个方法中只能指定一个可变参数,且必须是最后一个参数
int... i
06-递归
边界条件,前阶段,返回阶段
Java使用栈机制
占用内存较高
二、数组
01-概述
有序集合
长度固定
02-声明与创建
03-三种初始化及内存分析
- 堆: 存放new的对象及数组; 可以被所有的线程共享,不会存放别的对象引用
- 栈:存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)
- 方法区:可以被所有线程共享;包含了所有的class和static变量。
?堆大
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
04-下标越界
数组是对象,每个元素相当于该对象的成员变量
Java中,对象在堆中
05-使用
06-多维数组
07- Arrays
fill
sort
equals
binarySearch
08-冒泡排序
作业:八大排序算法
冒泡优化:内层循环内置flag,12:26s
09-稀疏数组
行,列,有效值个数
有效值行,有效值列,有效值
三、面向对象(OOP)
01- 概述
以类的方式组织代码,以对象的方式封装数据
封装;继承;多态
02-方法
03-方法的调用
static 静态方法: 类名.方法名,和类一起存在
非静态方法:先实例化,类实例化后存在
04-类与对象的创建
new分配内存空间,默认赋值,构造器调用
05-构造器
和类的名字相同;没有返回值;
重载
alt+insert:快捷构造
06-创建对象内存分析
再看
栈:方法,变量的引用
堆:对象
07-小结
引用:栈–>堆
08-封装
高内聚,低耦合
类的内部数据操作细节自己完成;仅暴露少量的方法给外部使用。
属性私有,get/set
set可以做安全性的判断
09-继承
extends
Java中只有单继承,没有多继承
除了继承,类间关系还有依赖、组合、聚合
public;protected;default;private;
作业:继承权限,类
Ctrl+H 打开继承结构
Java中所有类都默认直接或间接继承自Object
有参构造后,默认无参没有了
10-Super
- 调用父类的构造方法,[显式 super()]必须在子类的第一行
//隐式:调用了父类的无参构造
==?==为什么,内存图 - super只出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法,06:22s
11-重写*
重写都是方法的重写,与属性无关
需要有继承关系,子类重写父类方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大
- 抛出的异常:范围可以缩小,不能扩大:ClassNotFoundException–>Exception(大,不可)
A a=new A();
B b=new A();
静态方法:父类的引用指向了子类;方法的调用 只和定义的数据类型有关
非静态方法:和右侧有关,子类重写了父类的方法.
12-多态*
左边决定可以使用的方法
都有使用子类的重载
Father f1 = new Son();
final、static、private类不可以进行多态
13-instanceof和类型转换
判断类的类型,父类引用引向子类对象;父类转换为子类,强制转换
14-static
静态代码块 优先于 匿名代码块 优先于构造方法
且静态代码块只执行一次
final不能被继承