《Java应用技术》考点整理
By Cookie
Java常识
- 跨平台数据类型统一 JVM对系统底层完成了封装,Java代码可以直接在JVM中运行,一次编译处处运行。
- Java代码编译执行的过程
- Java和C++的比较
- Java内存模型
- 寄存器:对客户端程序员来说是透明的(编写程序的时候感受不到其存在。)
- 堆栈:我的理解就是栈,在主存中存放对象的引用,并维护声明周期
- 堆:在主存中存放所有对象
- 常量:一般写在程序代码内部
- 非RAM存储:分为流对象和持久化对象(其实是操统中的字符设备和块设备。)
- 单根结构
Java采用单根结构,Java世界中的万物继承自Object对象,C++中则不是。
单根结构的优势:
- 所有对象都易于在堆上创建
- 便于参数传递
- 便于垃圾回收
-
main()
public static void main(String[] args){ ... }
对象
- 基本数据类型
- 确定每种基本数据类型的存储空间大小,不随机器硬件架构变化而变化。
- 基本数据类型不像普通对象那样把引用存在栈中,对象实体存在堆中。而是直接把变量值存在栈中,更加高效。
-
关键字
-
对象变量的意义 用引用(reference)或句柄(handle)操纵对象
- 对象变量的赋值
- 基本类型直接复制本值
- String复制引用,但是赋新值的时候放弃之前的引用
- 对象复制引用
- 传递对象变量进函数
- 方法的基本组成部分有:名称、返回值、参数列表、方法体
- 方法签名:方法名和参数列表的合称,用于唯一标示方法
- 传递引用
- 对象变量的比较
- == 和 != 比较两个对象变量是否指向同一个对象
- equal 比较两个对象变量指向对象是否相等
- 字符串的连接
- 带标号的break和continue
- this 指代当前对象
- 成员初始化
- 成员变量初始化的顺序取决于定义的先后顺序
- 必要的时候才初始化静态变量,在该类的构造器执行之前进行
- 类的构造器是隐式的静态方法
-
静态成员 脱离于对象存在,归属于当前类,采用懒加载的机制,只有运行与类有关的操作时才初始化。
- 数组:创建、赋值、对象数组
- for-each循环:对象数组for-each
类
- package和CLASSPATH
- package 和 import关键字帮我们把全局名字空间分隔开,避免名称冲突问题。
举例: Dog.java加载过程
- 定位Dog.class位置
- 载入Dog.class
- 在堆上分配Dog空间
- 存储空间清零,引用置为null
- 执行
-
public class
- 单继承
- 通过继承共享成员变量和方法
- 基类的构造器总是先执行
- 如果没有声明构造器,则执行默认构造器
- 如果声明了带参数的构造器,却没有生命不带参数的构造器,则报错
哪些没有被继承?
- 构造函数没有被继承,但是能被调用
- 父类的任何成员变量都是会被子类继承下去的,这些继承下来的私有成员虽对子类来说不可见,但子类仍然可以用父类的函数操作他们
-
super 使用super.test()的方式在继承类中调用父类的方法。
-
继承和私有变量的关系 父类的任何成员变量都是会被子类继承下去的,这些继承下来的私有成员虽对子类来说不可见,但子类仍然可以用父类的函数操作他们
- 默认动态绑定
- final变量 - 常量
- 一个永不改变的编译时常量
- 一个运行时被初始化的值,你不希望他被改变
- 在对这个常量进行定义的时候,必须对其进行赋值
- 一个既static又final的变量,只占据一段不能改变的存储空间(一般用大写表示)
- private 是隐式的 final
- final方法和类
final方法
- 锁住方法,以防继承类修改,确保继承中使方法的行为保持不变,并且不会被覆盖。
- 效率
final类
- 不希望他有子类,在继承树上,final为叶子节点(绝育)
- final类禁止继承,类中方法隐式指定为final
- abstract & interface
抽象类和抽象方法
- 子类从父类(抽象类)创建的共同接口中导出
- 抽象方法只声明,不实现
- 包含抽象方法的类称为抽象类
接口
- 接口中所有的方法都是public
-
接口中所有的数据成员都是public static final
class ClassName implements interface{ ... }
- 接口可以继承自接口,但是不能继承自类
- 一个类可以实现一个或多个接口
- 内部类 ?
- 在类中定义类
- 与外部类的关系
- 匿名函数的语法
- 枚举类 ? *
容器
- List, Set和Map的区别
- List 通过特定序列存储
- 可以进化为ArrayList和LinkedList
- Set 不允许有重复元素
- 可以进化为HashSet和TreeSet
- Map 键值对
- 可以进化为HashMap和TreeMap
- List 通过特定序列存储
-
Iterator和for-each遍历 Iterator迭代器
public void listNotes(){ Iterator<String> it = notes.interators(); while (it.hasNext()){ System.out.println(it.next()); } }
for-each遍历
public voidlistNotes(){ for(String note : notes){ System.out.println(note); } }
-
范型的使用
Iterator<String> it = notes.interators();
- 开始时候不检查类型
- 提供给客户端程序员向编译器声明类型的方法,以此检查类型
- 子类型范型和通配符
标准类库
- import的意义
- Java解释器负责引用文件的查找、装载和解释。
- Java解释器运行过程如下:
- 找出环境变量CLASSPATH
- 把package名称中的原点替换成斜杠或反斜杠(根据操作系统决定),进入该目录
- 根据类名查找.class文件
- import static : 调用函数不需要写类名了
- String类:不可写、常用函数、switch-case
- 初始化后不可变
- 常用函数:
- s.compareTo(t)
- s.compareToIgnoreCase(t)
switch-case:
switch(s){ case "this": ... break; case "that": ... break; }
- StringBuffer类
- Random类
异常
- throw-try-catch: Throwable, catch的匹配,万能catch
- finally
- throws:override的关系 如果父类的构造函数要抛异常,子类必须都抛出来
IO
- stream:只处理byte(字节文件)
- Reader/Writer和stream的关系(文本文件)
- DataInput/OutputStream(二进制文件)
- 对象串行化
GUI
- 部件、容器、布局管理器的关系
- JFrame:pack()、setDefaultCloseOperation()
- Graphics
- 常见布局管理器的效用
- 菜单的类
- Swing的消息机制:Listener、Event、add/removeListener、线程通知
- 常见部件
- JTable与MVC模式
线程
- 创建线程:Runnable、Thread
- 线程控制:start()、sleep()、yield()
- synchronized
- wait()和notify()
- 管道通信
RTTI
- Class类:getClass()、.class、isIntance()
- instanceof
socket和JDBC
- Socket和ServerSocket
- JDBC如何连接和查询
三部曲
- DriverManager
- Connection
- Statement
- ResultSet
- 事物处理和preparedStatement
事务处理
- setAutoCommit()
- commit()
- rollback()
Lambda
- Lambda
- 容器的stream接口
Newest Posts