第一章
1.jdk jre jvm 的区别
2.什么是反射
3.Java常用指令
- javac:Java语言编译器
- java:字节码解释器
- javadoc:文档生成器
- javap:Java字节码分解程序
- javah:Jni编程工具
- appletviewer:小应用程序浏览工具
- jar:打包程序
第二章
1.常见数据类型
- 引用类型
- 基本类型
2.变量和常量
- 装箱拆箱
3.变量的作用域
全局变量使用前可以不初始化(将会是默认值),局部变量使用时必须初始化
4.基本类型和引用类型
5.类型转换
自动类型转换,强制类型转换(有风险)
6.操作符
(条件)?(如果成功):(如果失败)
7.运算符优先级:
优先级(由高到低) | 运算符 |
---|---|
分隔符 | . [] () {} , ; |
一元运算 | ++ – ! ~ |
强制类型转换 | (type) |
乘、除、取余 | * / % |
加、减 | + - |
位移运算符 | >> >>> << |
关系大小预算符 | > < >= <= |
等价运算符 | == != |
按位与 | & |
按位异或 | ^ |
按位或 | | |
逻辑与 | & |
逻辑或 | || |
三元运算符 | ? : |
赋值运算符 | = += *= ?= ^= &= |= <<= >>= >>>= |
8.流程控制
- 分支结构
if else - 循环结构
for while do…while; - 选择结构
switch(){case : … break;case: …break;defult:…} jdk7之后,可用枚举或字符串
9.数组,二维数组,数组遍历
10.值传递和引用传递
第三章 面向对象
1.常用类
1.接口与的继承
2.this , super
3.封装中public pravite procteced default
4.String常量池,拼接字符串
5.static final
6.String类常用方法(查阅帮助文档)有几个构造方法,多少个方法和功能
StringBuffer 字符串缓冲区,初始为16位。
常用的类,如Math,Date (查看帮助文档)
日期格式化DateFormat
2.类与类之间的关系
1.类在Java之间是单继承(与C++有区别)
- 使用extends
- 如果继承多个,只能用实现接口的方式实现,使用implement关键字
2.方法的重写(在父类与子类之间)
- 方法结构(返回值,参数,方法名)完全一致
- 父类的方法不可以是private
- 子类的修饰范围可以比父类大
-实现接口可以实现多个
3.super,this,super(),this()的用法。
- super指当前超类(父类)的引用
- this指当前类的对象(当前对象)
- this(),super()都只能放在第一行,代表的是挡墙或当前类的超类的传入同参数的构造器
4.final 不可更改变的,最终的。
- 修饰变量时,表示为常量
- 修饰类时,不能被继承
- 修饰对象时,对象也不可改变
- 修饰方法时,子类中可以覆盖但不能重写
5.static 静态
- 在编译时在类的范围里声明为共享(而不是对象)即类方法
- 在static方法内部不能调用非静态方法,反过来是可以的。
- 仅仅通过类本身来调用static方法
- static方法只能调用static方法
- 用法
- static方法
- static变量
- static代码块(优化程序性能)
- 修饰类时,只有内部类才可以被定义为static
6.抽象类,接口
- 抽象类
- 可以放抽象方法和普通方法
- 非抽象类继承抽象类必须实现抽象方法
- 抽象类继承抽象类和类的继承相似
- 抽象方法不须要实现(只有方法名没有方法体)
- 有抽象方法一定是抽象类
- 接口
- 接口定义为public 或是缺省的
- 接口可以继承接口
- 1.8之后,接口可以且必须实现static方法,在之前不可以使用静态代码块和静态方法,与abstract类为区别
- 接口是隐式抽象的(会被隐式指定为public abstract)
- 接口中的方法不可以在接口中实现,可在实现该接口的类中实现。
- 接口中的变量是会被隐式的指定为 public static final
- 接口中的方法没有方法体(default、static方法除外,必须有方法体,可有多个static方法)
- 接口没有构造方法(构造器)
第四章 异常处理
1.Throwable类
2.错误Error
一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或捕获,将导致应用程序中断;
3.异常Exception
因程序编码错误或外在因素导致的问题,这些问题能够被系统捕获并进行处理,从而避免应用程序非正常中断,例如:除以0、对负数开平方根、空指针访问等
- 异常的分类
- 非检查型异常:编译器不要求强制处置的异常,该异常是因编码或设计不当导致的,这种异常可以避免,RuntimeException及其所有子类都属于非检查型异常
- 检查型异常:编译器要求及其子类(RuntimeException及其子类除外)都属于检查型异常必须处理的异常,该异常是程序运行时因外界因素而导致的,Exception
4.异常处理
- try{}catch{}…catch{}finally{} :捕获异常
- throws :发送一个异常的抛出声明(抛出异常序列)
- throw : 抛出异常
第五章集合和泛型
一、集合
1.Collection
-可用迭代器
-可转数组
-add()放数据
- Set 元素是无序的,且不可以重复(重复会覆盖掉)
- 遍历使用forEach或Itretor
- 有序的如List可以使用三种遍历方式
2.Map<K,V> : 键值对
- key不能重复,value可以重复
- 数据也是无序的
- put()放数据
- keySet()方法将所有的key放入Set集合,然后进行遍历
- List
- ArrayList 数组
- Vector 线程安全数组
- LinkList 链表
- Collections类:对集合进行操作的工具类(查阅帮助文档)
二、泛型
- “泛”对于通用类型比Object的好处是简洁不需要强转。
- 通配符:是由“?”来表示一个未知类型,从而解决类型被限制、不能动态根据实例进行确定的缺点。
- 有界类型
- 使用extends关键字声明类型参数的上界;
使用extends关键字可以指定类型参数的上界,限制此类型参数必须继承 自指定的父类或父类本身。被指定的父类则称为类型参数的“上界(upper bound)”。
- 使用super关键字声明类型参数的下界。
使用super关键字可以指定类型参数的下界,限制此类型参数必须是指定的类型本身或其父类,直至Object类。被指定的类则称为类型参数的“下界(lower bound)”
- 泛型的限制
java的泛型会在编译时擦除,于是泛型的使用必须有限制
- 泛型的类型只能是类类型,不能是简单类型。
- 不同泛型的实例是不兼容的,如“Generic”与“Generic”的实例不兼容
- 定义泛型时,类型参数只是占位符,不能直接实例化,
例如:“new T()”是错误的;
- 不能实例化泛型数组,除非是无上界的类型通配符
例如:“Generic<String> []a = new Generic<String> [10]”是错误的,
而“Generic<?> []a = new Generic<?> [10]”是被允许的
- 泛型类不能继承Throwable及其子类,即泛型类不能是异常类,不能抛出也不能捕获泛型类的异常对象
例如:“class GenericException <T> extends Exception”、“catch(T e)”都是错误的。
第五章 JDBC编程
JDBC简介
- JDBC访问不同的数据库时,需要数据库厂商提供相应的驱动程序
- 完成的工作:
- 建立数据库连接
- 执行SQL语句
- 获取执行结果
JDBC工具类
第六章 线程
实现Thread
继承Runnable
Callable
Future
线程的生命周期
状态转换:
- 线程被new之后只能调用一次start()方法。
- isAlive现成的状态
有三种方法可以使终止线程。
- 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
- 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。
- 使用interrupt方法中断线程。
join()
- 暂停父线程,等待当前线程执行完毕。
线程的优先级
- getPriority(),setPriority(0~10)
- 优先级高只是先结束,执行的权限高一些,而不是完全优先。
- 优先级提倡使用。。。等常量
线程的同步(保证某一时刻只由一个线程访问)
- 同步代码块
- 同步方法
- 同步锁
- 定义一个ReentrantLock的对象,进行加锁和释放锁