JavaSE
2022-02-23 00:27:15 103 举报
AI智能生成
根据狂神整理
作者其他创作
大纲/内容
Java语言(初识)
疑问:学得会吗?
笔记:博客
MarkDown语法
简单的Dos命令
计算机语言发展
Java的诞生
1995
JavaSE
JavaME
Android
JavaEE
2006
Hadoop
JDK
开发者工具包
配置环境变量
JRE
运行环境
HelloWorld
javac Hello.java
生成class
java Hello
编译型语言
解释型语言
IDEA
基础语法
注释
行内注释 //
多行注释 /**/
文档注释/** */
javadoc生成帮助文档
标识符
关键字(5*10个)
数据类型
基本数据类型
整型(默认为int)
byte 1字节
short 2字节
int(默认) 4字节
long 8字节
0b 二进制
0x 十六进制
0 八进制
浮点型(默认为double)
float 4字节
double(默认) 8字节
BigDecimal(金融型)
字符型
char 2个字节
ascii
utf-8
unicode
'\u0000'
\b
\n
\r
\t
\'
\''
\\
布尔型
boolean 1位(?)
if(a)
引用数据类型(除了基本数据类型都是引用数据类型)
类
接口
数组
类型转换
自动类型转换
低转高
强制类型转换
高转低:(低)高
变量和常量
type varName [=value];
作用域
类变量
实例变量
局部变量
常量
final MAX_A = 10;
命名规范
1. 见名知意
2. 驼峰命名(变量,方法)
3. 类,首字母大写,驼峰命名
4. 常量:大写+下划线
5. 不要使用拼音命令
运算符
算术运算符
+ - * / ++ --
赋值运算符
=
关系运算符
> < >= <= == != instanceof
逻辑运算符
&& || !
位运算符
& | ^ ~ >> << >>>
条件运算符
? :
扩展运算符
+= -= *= /=
包机制
域名倒写
防止命名冲突
package
import
JavaDoc
JDK 帮助文档
1. javadoc
@author
@version
@since
@param
@return
@throws
流程控制
Scanner
用户交互 System.in
顺序结构
程序默认的结构,自上而下地执行
选择结构
if 单选泽结构
if-else 双选择结构
if-else if-else 多选择结构
switch
jdk 支持了String类型
case 穿透现象:如果不加break可能会出现。
break
default
循环结构
while
尽量避免死循环
do...while
for
for (int i=0;i<100;i++)
九九乘法表
增强for循环
break & continue
break:跳出循环
continue:终止当次循环
带标签continue
return:结束方法的运行
方法
什么是方法
方法的定义
修饰符 返回值 方法名(参数名){return 返回值;}
方法调用
类名.方法
对象.方法
方法重载
名字相同,参数列表不同
命令行传参
给main方法传递参数(jvm调优)
可变长参数
...
必须放在最后一个参数
递归
自己调用自己,给自己一个出口
面试常问(刷题网:LeetCode)
数组
数组的定义
new int[5]
{1,2,3,4,5}
必须是同一个类型
数组的使用
通过下标拿到值
ArrayIndexOutOfBounds
增强for循环遍历
二维数组
int[][]
Arrays工具类
排序算法
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
基数排序
面向对象
什么事面向对象
类与对象
类是对象的抽象;类是模版Class
对象是类的具体
构造方法
构造的重载
默认的无参构造
如果手动定义了有参构造就必须要手动再加一个无参构造
单例模式中,需要构造器私有!(不能被其他人new出来)
new 对象
栈存放引用
堆存放具体的对象
封装
属性私有,get,set
继承
extends
Object
子类拥有父类的全部特性
方法重写
this
super
java是单继承,只能继承一个父类
多态
父类的引用指向子类的对象 Person person = new Student();
instanceof 关键字,如果匹配,可以进行类型之间的转换
修饰符
public
protected
private
(default)
final
static
abstract
接口
interface
约束,只能定义方法名
子类实现接口,必须重写其中的方法
只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
接口比抽象类更抽象
一个类可以实现多个接口
内部类
局部内部类
静态内部类
匿名内部类(重点)
异常
Throwable
Exception
运行时异常
1/0
ClassNotFound
NullPoint
UnknownType
下标越界异常
... ...
检查型异常(不用管)
Error
AWT错误
JVM错误
StackOverFlow
OutOfMemory
五个关键字
try{}
catch(){}
先小后大
finally{}
throw
手动抛出异常
throws
方法抛出异常
自定义异常
继承Exception类即可
常用类
Object类
hashcode()
toString()
clone()
getClass()
notify()
wait()
equals()
Math类
常见的数学运算
Random类
生成随机数
UUID
File类
创建文件
查看文件
修改文件
删除文件
包装类
自动装箱和拆箱
(使用原因:Java是面向对象的语言,八大基本类型没有对应的类,所以使用包装类包装起来,然后可以生成对象。)
Date类
Date
SimpleDateFormat
yyyy-MM-dd HH:mm:ss
Calender(建议使用)
String类
不可变性(源码带final)(不可变字符串)
操作量较少时使用。
StringBuffer
可变长(可变字符串)
append(可以链式编程)
多线程数据量较大时使用。
效率低,安全。
StringBuilder
可变长(可变字符串)
append(可以链式编程)
单线程数据量较大时使用。
效率高,不安全。
1. String str = "a" +1+2
字符串会拼接:a12
2. String str = 1+2+"a"
a的ASCII码数值是97:100
集合框架
Iterator(实现了这个接口的就用这个遍历)
Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代ArrayList和HashSet等集合。
Collection
List(有序,可以重复)
ArrayList(数组,常用)
add
remove
contains
size
LinkedList(链表,常用)
getFirst()
getLast()
removeFirst()
addFirst()
... ...
Vector
Stack
Set(无序,不可重复)
HashSet(常用)
TreeSet
Map
HashMap(重点,天天用)
JDK1.7:数组+链表
JDK1.8:hash表=数组+链表+红黑树
TreeMap
Collections 工具类
泛型 <>约束,避免类型转换之间的问题
IO流
字节流
输入:InputStream
输出:OutputStream
字符流
读入:Reader
写出:Writer
节点流
CharArrayReader,CharArrayWriter,CharArrayInputStream,CharArrayOutputStream
StringReader,StringWriter
Pipe(管道流)
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
File(文件流)
FileInputStream
FileOutputStream
FileReader
FileWriter
处理流
Buffer
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
序列化
反序列化
Serializable
transient关键字
Data
DataInputStream
DataOutputStream
Object
ObjectInputStream
ObjectOutputStream
ObjectReader
ObjectWriter
转换流
InputStreamReader
OutputStreamWriter
Filter(过滤流)
FilterInputStream
FilterOutputStream
FilterReader
FilterWriter
Print
PrintWriter
PrintStream
多线程
进程和线程
run(), start()
线程创建的方式
Thread
start0
private native void start0();
Runnable
函数式接口
(也可以被)Lambda表达式(简化)
Callable
可以有返回值
静态代理
new Thread(Runnable).start();
Lambda表达式
函数式编程
避免内部类定义过多
new Thread(()->{
System.out.println();
}).start();
System.out.println();
}).start();
手动推导一遍Lamdba表达式
线程的状态
新建状态
就绪
运行
阻塞
死亡
常用的方法
sleep
join
yield(让位)
isLive
start
setPriority、getPriority
interrupt
线程同步
多个对象操作同一个资源,可能会产生并发问题。
前提:队列+锁
Synchronized
同步方法
弊端:锁得太多了
同步代码块(常用!)
原理:第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面的拿到锁才能进去。
死锁:两人都抱着对方的锁。必须满足的四个条件:
互斥
请求与保持
不剥夺条件
循环等待条件
Lock(优先级更高)
ReentrantLock
lock
trylock
unlock
线程通信
缓冲区:消息队列
标志位:红绿灯
wait();
notifyAll();
线程池(Pool)
池化技术
池的大小
最大连接数
保持时间
... ...
网络编程
IP
端口
Socket编程
TCP
三次握手
四次挥手
面向连接
UDP
无连接
Packet
URL
初识Tomcat
聊天通信
文件上传
GUI(可选)
AWT
Frame
监听事件
鼠标
键盘
窗口
动作事件
Swing
文本框
标签
按钮
文本域
面板
布局方式
关闭窗口
列表
贪吃蛇
Timer
键盘监听
游戏帧的概念
注解和反射
注解
元注解
内置注解
自定义注解
反射读取注解
反射
Class
newInstance();
类加载机制
Method
invoke(user3,"秦疆3");
存在重载,也需要写参数的类型
Field
set(user4,"秦疆4");
Construct
newInstance();
获取的时候需要,传递参数的class类型
破坏私有关键字
setAccessible(true);
性能分析
正常>监测关闭的反射>默认的反射
反射获得注解,泛型... ...
单例模式的探究
Stream
ForkJoin
效率对比
0 条评论
下一页