黑马程序员技术交流社区
标题:
[石家庄校区] 就业班day01-day06 总结 JavaEE就业06期
[打印本页]
作者:
Miracle22
时间:
2017-12-21 17:46
标题:
[石家庄校区] 就业班day01-day06 总结 JavaEE就业06期
本帖最后由 小石姐姐 于 2017-12-22 15:22 编辑
[石家庄校区] 就业班day01-day06 总结 JavaEE就业06期
静态
静态static:
含义
静态
是一个关键字
作用
修饰成员变量, 成员方法, 使其被该类的所有对象共享
修饰类
如何调用static修饰的变量和方法
`类名.静态成员属性
`类名.静态成员方法();
静态的特点
静态成员被所有对象共享
静态成员可以直接使用类名调用
静态成员的加载优先于对象
静态资源在创建类时加载并初始化(在方法区中)
非静态资源在创建对象时才加载并初始化(在堆内存中)
静态成员生命周期
随着类的加载而创建, 直到程序结束
静态成员在内存中的位置
方法区中的类的字节码区域中的静态区域中
静态成员的加载时机
随着所在类的加载而加载
静态成员和非静态成员的区别
生命周期不同
内存中的定义位置不同
初始化时机不同
静态方法中不能用this
因为this引用当前类的对象, 而静态方法在类加载时已经加载, 此时没有对象可以引用
如何避免一个类创建对象?
将构造方法使用private修饰, 让外界无法访问
代码块概述
代码块:
使用{}括起来的代码被称为代码块
4种代码块分类:
静态代码块
构造代码块
局部代码块
同步代码块
继承
面向对象三大特征:
封装
继承
多态
继承,是面向对象三大特征之一
概念
从已有类派生出新的类
已有类称为父类(基类), 新类称为子类(派生类)
子类对于父类的关系就是继承
Java中类的继承的特点
只支持单继承
不支持多继承
支持多层继承
Java中所有类都直接或间接的继承自Object类
继承的优缺点
开发中的原则是: 高内聚, 低耦合
优点:
提高代码复用性
提高代码可维护性
缺点:
类的耦合性增加了
匿名对象
匿名对象:
匿名, 没有名字, 没有变量引用的对象
使用匿名对象的格式:
调用属性: new 类名().属性;
调用方法: new 类名().方法();
作为参数: person.pick(new Fruit("Apple"));
匿名对象应用场景:
当方法或属性只调用一次时, 使用匿名对象
final
final关键字:
是一个修饰符, 可以修饰类, 方法, 变量, 表示其无法改变
作用:
修饰类: 不能被继承
修饰方法: 不能被子类重写
修饰变量: 自定义常量
基本数据类型: 其值永不改变的常量
引用数据类型: 引用一经初始化便不能修改, 且必须在使用前对其初始化
常量分类:
字面值常量
自定义常量: final修饰的
常量名命名规则: 字母全都大写, 不同单词用下划线分隔
抽象类
什么是抽象?
无法具体描述的, 但能够表示出共性
abstract关键字:
表示抽象
修饰方法和类
接口
接口是完全抽象的类, 接口中所有方法都是抽象方法
接口的作用:
为实现类扩展出接口具有的功能
弥补Java只能单继承的局限性, 抽象类只能单继承, 而接口可以多实现
接口的成员特点
接口的成员变量
必须都是常量(自定义常量)
默认是public static final修饰的, 即使你不写或少写某个修饰符
接口的构造方法
不能定义构造方法, 也不能创建对象
接口的成员方法
必须都是抽象方法
不能是static的
默认是public abstract修饰, 即使你不写或少些某个修饰符
接口的优点
通过多实现打破了单一继承的局限性
接口可以为实现类提供规则
降低程序耦合性(多人分别按照接口开发各自的功能)
多态:
多态
一个事物可以具有多种表现形态
是面向对象三大特征之一
面向对象三大特征:
封装
继承
多态
多态的前提
子父类存在继承关系
子类有重写父类的方法
父类引用指向子类对象
动态绑定:
对象调用的成员方法, 是根据程序运行时的具体的类型确定的
多态的成员特点:
除了成员方法运行时看右边, 其他无论编译还是运行都看左边
多态转型:
即转换类型
向上转型: 作为参数类型, 简化代码
子类型转换为父类型(自动转换).
向下转型:调用子类对象特有的方法
父类型转换为子类型(强制转换)
instanceof语句
作用: 判断一个对象是否是某个类的对象, 如果是则返回true, 如果不是则返回false
格式: 对象 instanceof 类名
包
包:
package, 就是文件夹(目录)
作用:
分类管理Java文件, 避免重名类的冲突
特点:
可以有多级, 每层目录就是一级
可以不使用包吗?
可以
权限修饰符
权限修饰符
private
default
protected
public
获取字节码对象的方式
获取字节码对象的3种方式:
Object类的Class getClass()方法
例如: Class clazz = student.getClass()
类名.class属性
例如: Class clazz = Student.class;
Class类的静态方法forName(String className)
例如: Class clazz = Class.forName("com.itheima.Student");
Date类
Date类: 日期类, 表示特定的瞬间, 可以通过方法来设定所表示的时间, 可以表示任意的时间
SimpleDateFormat类
SimpleDateFormat类: 专门用于格式化和解析时间
构造方法:
SimpleDateFormat SimpleDateFormat(String pattern): 创建对象同时指定格式
包装类
什么是包装类?
封装了基本数据类型的类, 提供了更多复杂的方法和变量
同时将基本类型的使用转换为了类的面向对象方式
自动装箱和拆箱
箱=包装
什么是自动装箱?
概念: 基本数据类型可以自动转换为包装类
什么是自动拆箱?
概念: 包装类可以自动转换为基本数据类型
正则表达式
什么是正则表达式?
是一种用于匹配字符串的规则
Pattern类:
创建正则表达式模板, 内有正则表达式规则
常用规则: 具体查看API文档的Pattern类
集合
集合:
是一个统称, 包含很多集合的实现类. 根据不同数据结构, 提供了不同的集合类
数据结构:
数据的组织和存储方式
体系结构:
将不同的集合实现类的共性向上抽取出父类, 从而形成一种体系
Collection接口
Collection接口
是单列集合体系的顶层
迭代器
Iterator接口:
迭代器
作用:
提供遍历集合的安全方式
并发修改异常:
ConcurrentModificationException
List接口
列表, 是Collection的子接口
特点:
元素存取有序, 元素可以重复, 有索引
泛型
泛型
Generic type, 广泛的通用的类型, 具体什么类型由开发者定义
好处:
避免类型转换问题
减少警告
简化代码书写
作用:
用于明确数据类型
将运行时才发生的类型转换问题, 提前到了编译时期
foreach(增强for循环)
foreach:
增强for循环
作用:
遍历数组和集合
增强for的优缺点:
优点: 简单快捷的拿到每一个元素
缺点:
循环过程中不能修改集合
不能像普通for循环那样使用索引
栈, 队列
栈(stack)
特点:
先进后出(FILO, First In Last Out). 或后进先出(LIFO, Last In First Out)
队列(queue)
特点:
先进先出(FIFO, First In First Out).
List
List的子类
ArrayList: 底层数组结构. 查询快, 增删慢
LinkedList: 底层链表结构. 查询慢, 增删快
如何选择: 根据数据结构特点
查询多, 增删少, 用ArrayList
查询少, 增删多, 用LinkedList
不知道, 用ArrayList
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2