简介
本文是为快速上手Java所写的一个大纲性的文档,并搜集网络上相关条目。目录结构参考本书。
开发环境设置
语言基础
- Java程序基本结构
- 源文件必须以.java为扩展名,一个源文件中可以有多个类,但是只能有一个public类,同时源文件名必须与该public类名相同(大小写不敏感)
- 数据类型
- 整型,byte 8、short 16、int 32、long 64
- 浮点型,float 32、double 64
- 布尔型,boolean
- 字符型,char
- 自动转换
- 强制转换new_type var2 = (new_type) var1
- parseXXX函数
- 控制台输入,BufferedReader、Scanner
- 运算符与表达式
流程控制
- if、if…else、if…else if… else
- switch…case,表达式可以为整型或字符型
- while,do…while
- for(expr1, expr2, expr3)
- break、continue、return
数组与字符串
- 数组定义并不分配内存空间
- new 动态分配内存
- binarySearch
- sort
- copyOf
- equals
- for each: for(int ele: arr)expr;
- 多维数组
- 字符串
类与对象
- 类定义(修饰符)
- 一般结构
- 成员变量
- 成员方法
- 对象(创建-使用-销毁)
- 匿名对象
- Java使用按值传递,没有引用传递(即C++中的&传递)
- 非基本类型传递的是其指针,可以看成是引用传递
- String在作为参数表现为按值传递,因为赋值实际上new了一个String
- 可变长参数
类的特性
面向对象
- 继承(is-a)
- 子类构造函数执行前会先调用父类无参数的构造函数
- 使用super调用特定的父类构造函数,必须为第一行
- 使用super.method()、super.attr访问父类中的方法和属性,不能访问private修饰的
- 不能覆盖父类中被final和static修饰的方法
- 子类方法的访问权限要大于父类方法
- 多态时,当子类覆盖了父类的方法,使用子类覆盖的方法
- 当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量
- Java中没有隐藏
- Java不需要virtual就能实现多态
- Java.lang.Object
- equals
- toString
- getClass
- 在派生类中覆盖基类的clone()方法,并声明为public【Object类中的clone()方法为protected的】
- 在派生类的clone()方法中,调用super.clone()
- 在派生类中实现Cloneable接口
- 抽象类、方法 abstract
- 在抽象类内声明构造函数是多余的
- 不一定要包含抽象方法、但是抽象方法一定要被abstract修饰
- 接口(has-a)
- 抽象类是一种功能不全的类
- 接口只是一个抽象方法声明和静态不能被修改的数据的集合
- 两者都不能被实例化
- 抽象类是提取具体类的公因式
- 而接口是为了将一些不相关的类"杂凑"成一个共同的群体
- 抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面
- 内部类和匿名类
- Package包
- 默认加载java.lang
- ?import导入包
- ClassPath
- GC
异常处理
- try-catch-finally语句
- 抛出异常
- throw new throwable
- 在方法中添加throws 列表
IO
多线程
- 实现
- extend Thread,并覆盖run方法
- implements Runnable,并实现run接口, 可以解决多重继承问题,实现数据共享
- 线程同步,synchronized修饰符
- 线程通信,wait、notify、notifyAll
GUI
设计模式
Java进阶的话可以看下《Java编程思想》,《Effective Java》,《深入Java虚拟机》