JavaSE 基础大纲
Java基础(JavaSE)
1、Java 基础语法;
1、1 注释
行内注释 //
多行注释 /**/
文档注释 /** */ - javadoc 生成帮助文档
1、2 标识符
关键字
1、3 数据类型
1、基本数据类型:四类八种
整数
byte - 1byte
short - 2byte
int【默认】 - 4byte
long - 8byte
(拓展:进制转换 二进制 - 0b -、十六进制 - 0x 、8进制 - 0)
浮点数
float - 4byte
double【默认】- 8byte
(拓展 - 金融计算不能使用 float和double ,要使用 BigDecimal)
字符
\b
\n
\r
\t
\\
\"
\'
char - 2byte
(拓展 ASCII编码-1字节、UTF-8编码-3字节、Unicode-2字节)
(拓展:
\u0000
转义字符)布尔值
boolen- 1位(0或1)
(拓展 if(a) )
2、引用数据类型
类
接口
数组
3、类型转换
自动类型转换
低转高(子类转父类)
强制类型转换
高转低(父类转子类) - 格式:(低)高 - (int)long
高低的概念在数字里面就是字节数,在类里面就是 子类 - 父类
1、4 变量和常量
1、type varName [= value];
2、作用域
类变量 - static 修饰变量(静态变量)
实例变量 - static去掉 (在类内方法外)-全局变量
局部变量(成员变量)- 方法内
3、常量
final MAX_A = 10;常量必须全部大写,单词隔开用下划线
4、命名规范
见名知意
驼峰命名 - 用在变量和方法上
类命名 - 是首字母大写+驼峰命名
常量 - 大写+下划线
不要使用拼音和中文
1、5 运算符
1、算数运算符:+ 、- 、* 、/、%、++、--
2、赋值运算符:=
3、关系运算符:>、<、>=、<=、==、!= 、instanceof
4、逻辑运算符:&&、||、!
5、位运算符:&、|、^、~、>>、<<、>>>
6、条件运算符:?:
7、扩展运算符:+= 、-=、*=、/=
1、6 JavaDoc
1、JDK 帮助文档
2、命令 javadoc
生成文档
@author 作者
@Version 版本
@Since 最早支持哪个java版本
@param 参数
@return 返回值
@throws 抛出的异常
1、7 流程控制
1、Scanner 用户交互 System.in
2、顺序结构:自上而下的执行
3、选择结构
if 单选择结构
if - else 双选择结构
if - else if - else 多选择结构
switch
(JDK7 支持了String类型)
case穿透现象
break
default
4、分支结构(循环结构)
while:尽量避免死循环
do... while
for - 可计次数一般用for循环 ,不可计次数一般用while 循环
for(int i=0;i<100;i++)
经典案例 - 99 乘法表
增强for循环
break & continue
(带标签的continue 废弃的)
break 跳出循环
continue 终止当此循环,继续下次循环
return 结束方法的运行;
1、8 方法
1、什么是方法?- 语句块的集合
2、方法的定义
修饰符 返回值 方法名(参数名){ return 返回值;}
3、方法的调用
类名.方法
对象.方法
4、方法重载
名字相同,方法形参列表不同;
5、命令行传参 - 给mian 方法传递参数 (涉及JVM调优)
main 方法是自带了参数的,可以通过命令行的方式传递参数进运行程序;
1、9 数组
1、数组的定义
new int[5]
{1,2,3,4,5}
数组必须是同一个类型
2、数组的使用
通过下标拿到值
ArrayIndexoutofBounds - 数组下标越界异常
通过增强for循环遍历
3、二维数组 :
int[ ] [ ]
4、Arrays类(工具类)
5、排序算法(第一个数据结构)
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
桶排序(基数排序)
2、面向对象:一切皆对象
2、1 类和对象
1、类是对象的抽象:模板Class;
2、对象是类的具体
2、2 构造方法
1、构造方法的重载
2、默认的无参构造
如果手动定义了有参构造,就必须要手动加一个无参构造;
单例模式,需要构造器私有;
2、3 new对象
1、栈存放引用,堆存放具体的对象
2、4 三大特性:封装、继承、多态
1、封装属性私有:get、set 方法;
2、继承
extends 继承关键字
Object 是所有类的老祖宗
子类拥有父类的特性
方法重写
this
super
Java 是单继承,只能继承一个父类,但是可以实现多个接口;
3、多态
父类的引用指向子类的对象 Person person = new Student();
instanceof 关键字,如果匹配,可以进行类型之间的转换;
2、5 修饰符
1、public
2、protected
3、private
4、static
5、fina
6、abstract
2、6 接口
1、interface
2、特性:
约束,只能定义方法名;
子类实现接口必须重写其中的方法;
3、函数式接口:只有一个方法的接口,可以使用lambda表达式简化;
4、接口比抽象类更抽象;
抽象类里可以有具体的实现,接口不能有方法的具体实现,实现交给实现类进行;
2、7 内部类
1、局部内部类
2、静态内部类
3、匿名内部类(重点) - 可以被lambda表达式简写;
4、普通内部类
3、异常;
3、1 Throwable 异常的总结口
1、Exception
运行时异常(一般处理运行时异常)
1/0
ClassNotFound
NullPoint
UnKnwoType
下标越界异常
编译时异常(检查型异常)
2、Error
AWT错误
JVM错误
StackOverFlow 栈溢出
OutOfMeory 内存溢出
3、2 处理异常,五个关键字
1、try{}
2、catch{} 先小后大
3、finally{}
4、throw 手动抛出异常
5、throws 方法抛出异常
3、3 自定义异常
1、继承Excpetion 类即可
4、I/O流;
4、1 字节流
1、输出:OutputStream
2、输入:InputStream
4、2 字符流(中文一定要用字符流)
1、Reader
2、Wirter
4、3 处理流
1、buffer
bufferInputStream
bufferOutputStream
bufferReader
bufferWriter
2、data
DataInputStream
DataOutputStream
3、转换流
InputStreamReader
OutputStreamWriter
4、Filter(4个)
5、Print
PrintWriter
PrintSteam
6、Object 流(4个)
ObjectInputStream
ObjectOutputStream
ObjectReader
ObjectWriter
7、序列化和反序列化
Serializable
transient(透明的)- 某一个属性时透明的,使用关键字就不会被序列化;
4、4 节点流
1、CharArrayReader、Writer、InputStream、OutputStream
2、StringReader、StringWriter
3、pipe(管道流) : PipedOutputStream
4、File()
5、集合(容器);
5、1 Collection(单列集合 - 对象集合)
List(有序,可以重复)
getFirst()
getLast()
pop()
push()
removeFirst()
addFirst
...
add
remove
contains
size
ArrayList - 全部常用
LinkedList(链表) - 常用
Vector
Stack
Set(无序,不可重复)
HashSet - 一般常用
TreeSet
iterator 迭代器 遍历
5、2 Map(双列集合 - 键值对集合)
- HasMap - 重点常用
JDK 1.7以前:数组+链表 ; JDK1.8之后:数组+链表+红黑树
TreeMao
5、3 Collections 工具类
5、4 泛型 <> ,约束作用,避免类型转换之间的问题;
6、常用类和工具类;
6、1 Object类
1、hashcode()
2、toString()
3、clone()
4、getClass()
5、notify()
6、wait()
7、equals()
6、2 Math类(数学运算)
6、3 Random类(生成随机数)
UUID类
6、4 File类
1、创建文件
2、查看文件
3、修改文件
4、删除文件
6、5 包装类
1、自动装箱和自动拆箱
6、6 Date类
1、Date
2、SimpleDateFormat
yyyy-MM-dd HH:mm:ss
3、Calendar - 日历类(建议使用)
6、7 String类 - 操作量较少
不可变性 final
6、8 StringBuffer类 - 多线程数据量较大 - 效率低,安全
可变长 - append()【append 可以链式编程】
6、9 StringBuilder类 - 单线程数据量较大 - 效率高,不安全
可变长 - append()
6、10 问题
String str = "a"+1+2 a12
String str = 'a' + 1+2 具体的数值
String str = 1+2+ “a” 3a
7、反射与注解;
7、1 注解
1、元注解
2、内置注解
3、自定义注解
4、反射读取注解
7、2 反射
1、Class
newInstance();
2、类加载机制
对象获取
类获取
3、Method 获得方法
通过反射获得方法对象,再通过invoke执行方法并传递方法参数, .invoke(参数类型 参数,参数类型 参数) - 因为方法存在重载,也需要写参数的类型
4、Field 获得字段
通过反射get 获得 字段
.set(参数类型 参数) - 因为方法存在重载,也需要写参数的类型
5、Construct
newInstance(参数类型 参数); - 获取的时候需要传递参数的class类型
6 破坏私有关键字
setAccessible(true);
就可以set 数据
7 性能分析
正常new >检测关闭的反射>默认的反射
8\ 反射获得注解\泛型
9 \单例模式的探究
9 \Stream
11\ ForkJoin
8、网络编程;
8、1 IP
8、2 端口
8、3 Socket 编程
8、4 TCP
1、三次握手
2、四次挥手
8、5 UDP
1、无连接
2、Packet 以包发送
8、6 URL
8、7 聊天通信
8、8 文件上传
9、GUI编程(可选) -
9、1 AWT
1、Frame
2、事件
监听事件
鼠标监听事件
键盘监听事件
窗口监听事件
文本框监听事件
动作监听事件