Java基础
- java2标准版(J2SE):桌面端
- java2移动版(J2ME):手机端
- java2企业版(J2EE):服务器端
- 特性和优势
- 简单性、面向对象、可移植性、高性能、分布式、动态性、多线程、安全性。
- JDK:java开发工具包,包含JRE和java编译器javac、监控工具jconsole、分析工具jvisualvm等
- JRE:java运行环境,包含java虚拟机和java基础类库。
- JVM:java虚拟机
- java程序运行机制:解释型和编译型(先经过编译成class文件,再到操作系统通过解释器解释)
- IDE:集成开发环境
java基础语法
-
注释:单行注释//、多行注释 😕* /、文档注释 /**/。
-
标识符:Java中所有组成部分需要名字。类名、变量名以及方法名都称为标识符。所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始,首字母不能以数字开头,标识符大小写是敏感的。
-
关键字
-
数据类型:强类型语言(要求变量的使用严格符合规定,所有变量都必须先定义后才能使用)。 弱类型语言。
-
java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)。
-
变量
局部变量(在函数中):必须声名和初始化值 实例变量:从属对象 类变量:static。常量:使用final关键字,不能改变初始值。 -
数据类型
-
字节
-
类型转换
强制类型转换由高到低,自动类型转换是有低到高,注意:不能对布尔值进行转换,不能把对象类型转换为不相干,在把高容量转到低容量的时候,要强制类型转换,转换的时候可能存在内存溢出或者精度问题。 -
命名规范
-
运算符
运算结果向高级别的运算符转换。 -
一元运算符:++、–:a++(先用后加),++a(先加再用)
-
逻辑运算符:&&与、||或、!非。
-
三元运算符:X ? Y : Z (如果X==true,结果为Y,否则为Z)
包机制
-
javadoc文档:@autor 作者 @version 版本号 @sincere jdk版本
-
用户交互Scanner
输入整数hasNextInt、依次类推。
-
顺序结构是框与框之间按从上到下的顺序进行的,它是若干个依次执行处理步骤组成的。
-
if结构
-
switch多选择结构
-
增强for循环
-
java控制流程:break continue
-
Java方法详解
方法的定义
-
java是值传递,当进行引用传递时传入的是地址,其本质还是值传递
-
可变参数
-
面向对象
-
方法的定义与调用
-
引用传递本质是对象,仍然是值传递。
-
构造器:IDEA构造方法快捷键alt+insert
-
创建对象内存分析
-
封装
-
继承
-
super注意点
-
重写
-
多态
-
intanceof
-
抽象类
-
接口
-
异常
-
捕获和抛出异常:快捷键crtl+alt+t
-
异常总结
-
日期常用类Date、Calendar(单例模式、构造方法守保护不能new)、SimpleDateFormat(日期格式转化,一般要进行封装)
-
String、StringBuffer
总结:假如定义的字符串内容基本不变或者很少变化,用String效率高;假如定义的字符串内容经常变动,要用StringBuffer。 -
Arrays类型
-
设计模式:单例设计模式 饿汉模式:在类中直接new出该类的对象,饱汉模式:在类中通过判断是否调用,再创建该对象。
-
java泛型
java集合
- list集合:List是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩展,List集合里的元素是可以重复的。List接口的主要实现类有ArrayList,和LinkedList。
在数据量不大的情况下,这两个类性能差别不大,一般情况下,集合里的元素很少变化的,一般用ArrayList,假如集合里元素经常变动,要用LinkedList;底层实现有差别的。 - 集合的遍历:foreach和Iterator(迭代器)
- JAVA集合-Set集合:Set集合是Collection接口的子接口,没有对Collection接口进行扩展,里面不允许存在重复的内容;HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对HashSet的并发访问。HashSet 实现了 Set 接口。
- JAVA集合-Map集合:HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序。HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
Java IO流-IO 流简介
-
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为
-
流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
-
IO 流的分类:根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
-
Java IO流-文件操作File 类
1,public boolean mkdir() 创建此抽象路径名指定的目录。
2,public boolean createNewFile() 创建一个文件
3,public boolean delete() 删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录
必须为空才能删除。
4,public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
5,public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文
件。
6,public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
-
Java IO流-InputStream和OutputStream
InputStream是输入流 OutputStream是输出流;
InputStream输入流可以把文件从硬盘读取到内存;
OutputStream输出流可以把文件从内存写入到硬盘;
我们实际使用的都是InputStream和OutputStream的子类;
比如文件操作方面用的是FileInputStream和FileOutputStream; -
Java IO流-BufferedInputStream和BufferedOutputStream
带缓冲的输入和输出流;
这里缓冲的概念,就是在A,B之间建立内存缓冲区,读取得快,就先放缓冲区,然后再从缓冲区写入指定目标,和没有缓冲比,效率快很多。 -
Java IO流-Reader和Writer
主要用于文本的读取和写入,一般使用的实现类是FileReader和FileWriter;
java多线程
-
进程、线程、多线程
-
Thread多线程类
-
实现Runnable接口
-
实现Callable接口
-
静态代理模式
-
lamda表达式
-
线程状态
-
线程方法
-
停止线程
-
线程休眠
-
线程礼让
-
线程合并
-
线程状态观测
-
守护(daemon)进程
-
线程同步:队列+锁
-
同步方法与同步块
-
死锁
-
Lock锁
-
线程通信
-
生产消费者问题解决方法 管程法:
信号灯法:设置flag -
线程池
java注解
-
注解
-
内置注解
-
元注解
-
自定义注解
-
反射
-
得到的Class类
-
有Class对象的类型
-
java内存分析
-
分析类的初始化
-
类加载器的作用
-
动态创建对象执行方法
-
性能比较
-
获取泛型信息
图片转存中…(img-3Lw6rDi5-1641013902271)][外链图片转存中…(img-FlTPk9fg-1641013902271)]
- 反射操作注解