A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2017-12-22 15:08 编辑

学习总结

Day01:静态
Static : 静态修饰, 它是一个关键字,用来修饰成员变量和成员方法.
Static 特点:
被所有对象所共享;(存在方法去中,静态区)
可以直接使用类名调用;
静态所修饰的成员加载优先于对象;
随着类的加载而加载.
Static 注意事项:
静态方法中,只能调用静态成员和静态方法;
非静态方法中,既可以调用非静态成员变量和方法,也可以调用静态成员变量和方法
代码块: {}
局部代码块:方法中, 执行到方法中局部代码块时 执行
构造代码块:类中 方法外,每次创建对象都会执行,并且在构造方法之前执行
静态代码块:类中 方法外,被 static 修饰的代码块,随着类的加载而加载,只加载一次,加载类时需要做一些初始化.
同步代码块:***
Day02:继承
关键字: extends
继承的特点:只能单一继承,可以多层继承.
方法重写:在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法之后,使用子类对象调用的就是子类的方法,
方法重写应用场景:当父类的方法不能完全满足子类使用,这时候子类重写父类的方法.
继承中构造方法执行顺序:
在有父类的继承关系的类中,创建子类的对象,调用子类的构造方法;
如果子类构造方法的第一行代码没有调用父类的构造方法,则会默认调用父类的无参构造;
肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化
继承优缺点:
优点:
提高代码复用性
提高代码可维护性
缺点:
类的耦合性增加了
开发中原则:高内聚/低耦合
内聚:自身完成某件事的能力
耦合:类与类的依赖关系,耦合高了类与类之间相互依赖太多
Day03:接口 多态
接口: interface 接口中全部方法都是抽象方法
接口和类的关系是 实现关系
接口的成员特点:
只能有抽象方法;
默认使用 public & abstract 修饰方法
只能使用 public & abstract 修饰方法 public abstract void eat();
默认使用 public static final 来修饰成员变量 (自定义常量) 全部大写
注意:
不能创建对象(不能实例化);不能定义构造方法
类与接口是实现关系,一个类实现一个接口必须实现它所有的方法
多态:
多态的前提:
子父类的继承关系
方法的重写
父类引用指向子类对象 Animal a = new Cat(); (向上转型)
多态的优缺点:
优点:
可以提高可维护性(多态前提所保证),提高代码的可扩展性,提高代码复用性
缺点:
无法直接访问子类的特有成员 (向下转型),
Day04: 包 权限修饰符 内部类
(文件夹)的特点:
可以有多层,两包之间用 点 隔开
不同包下的文件名可以重复
包的声明必须是第一行代码.
不同包之间的互相访问:
1.使用类的全名(包名.类名) java.util.ArrayList list = new java.util. ArrayList()
2.使用关键字 import 将类导入
3.import java.util.* *代表的是通配符,代表导入了这个包下所有类 ,并没有导入子包下的类
权限修饰符:
public : 整个项目
default(什么都不写) 默认的: 同一个包中
private:当前类中访问
protected :同一个包中,它的子类也可以访问
内部类:
在类的成员位置, 和成员变量和成员方法所在的位置是一样的 (在成员位置上的普通类)
在内部类中,可以直接访问外部类的成员,包括私有成员
成员内部类的修饰符:
如果使用私有private 修饰符 就无法在其他类中访问.
匿名内部类: ( 只是用一次可以作为参数传递)
格式: new 类/接口 () {
如果是创建了继承这个类的子类对象,我们可以重写父类方法
如果是实现这个接口的子类对象,必须要实现接口的所有方法
};
原理:而是创建了继承这个类的子类对象,或者是创建了实现这个接口的子类对象
Day05:  API
Objict
获取字节码对象(class)的方式: 一个类只有一个字节码对象
getClass():返回一个字节码对象
class.forName(String类的全名)
Student s = new Student();
Class clazz1 = s.getClass(); //方式1.通过Object类的getClass()方法获取
Class clazz2 = Student.class; //方式2 通过类名调用属性class来获取
Class clazz3 = Class.forName("com.itheima02.Student"); //方式3.通过Class类的静态方法forName()来获取
System:
包含一些有用类字段(err(错误输出流) in out ) 和 方法 不能被实例化.
static long currentTimeMillis()
System.currentTimeMillis():以毫秒值返回当前时间(1970-1-1-0.0.0 到现在的毫秒值)
static void exit 结束 终止
Date : 表示特定的瞬间,精确到毫秒,可以设定自己所表示的时间,可以表示任意时间
Date() : 创建的是一个表示当前系统时间的Date对象 Date d = new Date(1000*60)
Date(long date) : 根据"指定时间"创建Date对象
Date的常用方法: java.util 包下
毫秒值---(转换)---Date
设置
返回值 void 参数 long void setTime(long time)
Date---(转换)---毫秒值
获取
返回值 long 无参数 long getTime()
SimpleDateFormat:
格式化: Date ---- String
2049-8-26 ---- 2049年8月26日
String format(Date date)
解析: String ---- Date
2049年8月26日 ---- 2049-8-26
Date parse(String source(字符串))
正则表达式: 就是一套规则,,可以用于匹配字符串.
boolean matches(String regex); 判断当前字符串是否匹配指定的正则表达式,匹配返回 true,
否则 返回 false.
Day06 :集合
集合体系结构:
由于不同的数据结构(数据的组织,存储方式),所以java为我们提供了不同的集合
不同集合功能是相似的,不断向上提取,共性抽取出来,这就是集合体系形成过程.
Collection 接口 顶层单列集合体系
Collection c = new ArrayList() :多态 父类引用指向子类对象
遍历集合: 迭代器.
1.toArray 转成object 数组
2.iterator();可以返回一个迭代对象
hasNext()方法:判断集合中是否有元素可以迭代
next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。
并发修改异常:ConcurrentModificationException (只有使用迭代器 时才会出现的异常)
解决方案 : 在使用迭代器进行遍历的时候使用迭代器来进行修改
泛型 <> :是一种广泛的类型,把明确数据类型的工作提前到编译时期,借鉴了数组的特点
泛型的好处:
1.避免了类型的转换
2.可以减少黄色警告线
3.简化代码书写
foreach: 增强for 循环,一般用于遍历集合或者数组
格式:
for(元素类型变量:集合或者对象数组){
可以直接使用变量
}
常见的数据结构: 链表,由链子连接起来的一堆结点
结点: 地址值, 值, 下一个结点地址值
数组特点: 查询快, 增删慢.
链表特点 : 查询慢,增删快
List : 特有功能
有序的,(存储和读取方法一致)
有整数索引
允许重复
特有方法:
add
get(int index)
remove(int index)
set(int index,"") 替换指定索引 元素

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马