-
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)
-
字符
- char - 2byte
- (拓展 ASCII编码-1字节、UTF-8编码-3字节、Unicode-2字节)
-
(拓展:
\u0000
转义字符)- \b
- \n
- \r
- \t
- \\
- \"
- \'
-
布尔值
- 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
- break 跳出循环
-
continue 终止当此循环,继续下次循环
- (带标签的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(有序,可以重复)
-
ArrayList - 全部常用
- add
- remove
- contains
- size
-
LinkedList(链表) - 常用
- getFirst()
- getLast()
- pop()
- push()
- removeFirst()
- addFirst
- ...
- Vector
- Stack
-
ArrayList - 全部常用
-
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、事件
-
监听事件
- 鼠标监听事件
- 键盘监听事件
- 窗口监听事件
- 文本框监听事件
- 动作监听事件
9、2 Swing
1、文本框
2、标签
3、按钮
4、文本域
5、面板
6、布局方式
7、关闭窗口
8、列表
9、3 案例:贪吃蛇
1、Timer
2、键盘监听
3、游戏帧的概念
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比