总结:
配置环境
%JAVA_HOME%\jar\bin
%JAVA_HOME%\bin
=====================================================================================================================
关键字:abstract,assert,boolean,break,byte,catch,char,case,class,const,
default,do,continue,default,double,volatile,super,strictfp,instanceof,finally(必须执行)final常量native,protected保护同包不同类,transient
=====================================================================================================================
行内注释//
多行注释/**/
文档注释/** */生成javadoc帮助文档
=====================================================================================================================
数据类型:
基本数据类型-byte-1-short-2-int-4-long-8-float-4-double-8-char(ascii,utf-8,unicode)-2-boolean-1
引用数据类型-类-接口-数组
类型转换-自动转换-强制转换
BigDecimal浮点转换
'\u0000'-字符转换
\b退格
\n空格
\r回车
\t制表
\'
\"
\\
if(a)
0b二
0x十六
0八
=====================================================================================================================
类变量(static)
实例变量
局部变量
常量final MAX_A=10;
命名规范1.见名知义2.驼峰命名3.类,首字母大写,驼峰命名,4.常量:大写=下划线5.不要使用拼音
=====================================================================================================================
运算符:
算术运算符%+-*/++--
赋值运算符=
关系运算符<<>><>==!=instanceof
逻辑运算符&&||
位运算符&|
条件运算符?:
扩展运算符+=-=*=/=
=====================================================================================================================
包机制-域名倒写-防止命名冲突-package-import
javadoc-JDK帮助文档
javadoc
1.路径前cmd空格
2.javac 文件名.java
3.java 文件名
4.javadoc -encoding UTF-8 -charset UTF-8 Test1.java
@author
@Version
@since
@param
@return
@throws
=====================================================================================================================
流程控制
Scanner用户交互System.in
if 单选择结构
if-else双选择结构
if-else-if多选择结构
switch、jdk7.0支持String类型case
case穿透现象
break;
default
循环结构
while
do...while
for
增强for
break&continue
break:跳出循环
continue:终止当前循环
带标签continue
return:结束当前方法的运行
=====================================================================================================================
方法
方法的定义;修饰符 返回值 方法名(参数名) {return;返回值}
方法调用:类名.方法-----对象.方法
方法重载:名字相同,参数列表不同
命令行传参数 给main传参 java 文件名 参数
可变长参数...必须放在最后
递归:自己调用自己,给自己一个出口
面试必考(力扣)
=====================================================================================================================
数组;
定义new int[5]
{1,2,3,4,5}
必须同一个类型
数组使用:通过下标拿到值
ArraylndexoutofBounds下标越界
增强for遍历
二维数组int[][]
Arrays工具类
冒泡排序
选择排序
插入排序
快速排数
归并排序
希尔排序
堆排序
基数排序
=====================================================================================================================
面向对象
类与对象:类是对象的抽象Class模板,对象是类的具体
构造方法:
构造重载--默认的无参构造
如果手动定义了有参构造就必须要再加一个无参构造
单例模式,需要构造器私有
new对象--栈存放引用,堆存放具体对象
封装--属性私有,get,set
继承--
extends
Object
子类拥有父类全部特性
Java是单继承,只能继承一个父类
方法重写
this
super
多态
父类的引用指向子类的对象 Person person=new Student();
instanceof,如果匹配,可以进行类型转换
public
protected
static
final
abstract
接口--interface
约束,只能定义方法名不能实现
子类实现接口,必须重写其中方法名
只有一个接口叫做函数式接口,可以使用lambda表达式简化
接口比抽象类更抽象
一个类可以实现多个接口
=====================================================================================================================
内部类:
局部内部类
静态内部类
匿名内部类(重点)
=====================================================================================================================
异常 Throwable--Exception--Error
Exception;
运行时异常:1/0,ClassNotFound,NullPoint,UnKownType,ArrayIndexoutofBounds下标越界
检查型异常
Error--AwT错误
JVM--错误
StackOverFlow栈溢出
OutOfMemory内存溢出
try{}catch(){}先小后大
finally{}
throw手动抛出
throws方法抛出
自定义异常 ---继承Exception类即可
==========================================================================================
常用类
Object类---hashcode()--toString()--clone()--getClass()--notify()--wait()--equals()
Math类---数学计算
Random类---生成随机数
File类---创建文件--查看文件--修改文件--删除文件
包装类--自动装箱和拆箱
Date类--Date--SimpleDateFormat日期转换yy-MM-dd-HH--mm:ss--Calendar建议使用
String类--不可变性final--操作量较少
StringBuffer类--可变长append--多线程数据量较大--效率低安全
StringBuilder类--可变长--单线程数据量较大--效率高不安全
String str='a'+1
String str=“a”+1+1
String str=1+2+“a”
=================================================================================================
集合框架
Collection--List有序可重复(Iterator:迭代器)(ArrayList常用(add,remove,contains添加,size大小),
LinkedList常用,链表(getFirst(),getLast()removeFirst()),Vector,Stack)
--Set无需不可重复(HashSet常用,TreeSet)
Map--HashMap重点,天天用,面试题(jdk-1.7数据+链表,jdk1.8-hash表=数据+链表+红黑树,效率提高)--TreeMap
Collections工具类
泛型<>约束,避免类型转换之间的问题
=====================================================================================================================
IO流
序列化(反序列化)--Serializable标记型接口--不序列化transient(透明的)
字节流
InputStream
OutputStream
字符流
Writer
Reader
节点流
CharArrayReader
CharArrayWriter
CharOutputStream
CharInputStream
StringReader,StringWriter
管道流
PipeInputStream
PipeOutputStream
PipeReader
PipeWriter
File流
处理流
buffer流bufferInputStream--bufferOutputStream--bufferReader--bufferWriter
filter流filterInputStream--filterOutputStream--filterReader--filterWriter
Converting转换流:
InputStreamReader--OutputStreamWriter
Object流ObjectInputStream-- ObjectOutputStream--ObjectWriter-- ObjectReader
Data流DataInputStream--DataOutputStream
Print流--PrintWriter--PrintStream
=====================================================================================================================
多线程
进程和线程
run(),Start()
线程创建的方式
Thread--start本地方法:Java无权调用,交给底层c处理native
Runnable函数式接口 lambda表达式
Callable可以有返回值
静态代理模式new Thread(Runnable).start();
Lambda表达式(函数式编程)避免内部类定义过多
线程的状态
新建状态
就绪
运行
阻塞
死亡
常用方法
sleep
join插队
yield礼让--有概率
isLive存活
start
setPriority优先级--几乎没用
=====================================================================================================================
线程同步
多个对象操作一个资源---并发--排队--队列+锁
--synchronized--同步方法(弊端:锁太多范围大了了)---同步代码块(常用)---第一个线程拿到锁,后面的就要排队,后面的拿到锁才能就去
synchronized和lock区别===========
1.synchronized内置的Java关键字,lock是一个Java类
2.synchronized无法判断获取锁的状态,lock可以判断是否获取锁
3.synchronized自动释放锁,lock手动释放,不释放就死锁
4.synchronized线程1(获得锁,阻塞)线程2(等待),lock锁不会一直等待
5.synchronized的可重入锁,不可以中断,非公平锁;lock的可重入锁,可以判断锁ReentrantLock(ture)公平,默认fault
6.synchronized适合锁少量的代码同步问题,lock适合锁大量同步代码
--死锁:条件--互斥--请求与保持--不剥夺--循环等待
=====================================================================================================================
lock三部曲:
1.new ReentrantLock();
2.lock.lock();
finally{lock.unlock();}
lock(优先级高) ReentrantLock可重入锁(ReentrantReadeWritelock.ReaderLock读锁,ReentrantReadeWritelock.WriterLock写锁)(NonfairSync非公平锁,FairSync公平锁)-----lock--unlock--trylock
Lock--Condition--await--signal
8锁问
锁的优先级lock>同步代码块>同步方法
线程通信--缓冲区:消息队列--标志位(线程唤醒)--wait();--notifyAll();
线程池--池化技术--池的大小--最大连接数--保持时间--
=====================================================================================================================
网络编程--URL--ip--端口--Socket--TCP(三次握手四次挥手面向连接)--UDP(无连接,packet包发送)
URL--
初识Tomcat
聊天通信
文件上传
=====================================================================================================================
GUI--
AWT--Frame--监听事件--鼠标--键盘--窗口--文本框--动作事件
Swing--文本框--标签--按钮--文本域--面板--布局方式--关闭窗口事件--列表(下拉框)
=====================================================================================================================
注解
元注解
内置注解
自定义注解
反射读取注解
Class------newInstance()
类加载机制
Method--invoke();激活方法,存在重载
Field----set();属性
Construct---获取的时候,需要传递参数class---newInstance();
破化私有关键字setAccessible(ture);
性能分析:正常>检测安全关闭>普通反射
反射获得注解,泛型...
=====================================================================================================================
单例模式的探究
Stream
ForkJoin效率对比
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报