JavaSE
2021-06-18 13:43:04 33 举报
AI智能生成
Java基础知识总结
作者其他创作
大纲/内容
Java语言初始
Java语言之我的认识
注册博客:27+
MarkDown语法
简单的DOS命令
计算机语言的发展史
Java的诞生
1995
Java SE
Java ME
Android
Java EE
2006
Hadoop
JDK
开发者工具包
配置环境变量
JRE
运行时环境
hello world
javac Hello.java
生成class文件
java Hello
编译型
解释性语言
IDEA
基础语法
注释
行内注释 //
多行注释 /**/
文档注释 /** */
javadoc 帮助文档
标识符
关键字
数据类型
基本数类型
整形
byte 1
short 2
int 4 默认
long 8
ob 二进制
0 八进制
ox 十六进制
浮点型
float 4
double(默认) 8
BigDecimal
字符型
char 2
ascii 中文1
Unicode 中文2
utf-8 中文3
‘\u0000’
\b
\n 换行
\r 换行
\t 制表符
\' '
\* *
\\ \
布尔型
boolean 1
if(a)
引用数据类型
类
接口
数组
类型转换
自动类型转换
低到高
强制类型转换
高转低
变量与常量
type varName =[value];
作用域
类变量 static
实例变量
局部变量
常量
final MAX_A = 10;
命名规范
1.见名知意
2.驼峰命名 (变量名、方法)
3.类(首字母大写、驼峰命名)
4.常量 (大写、下划线)
5.不要使用拼音
运算符
算术运算符
+、-、*、\、%、++、--
赋值运算符
=
关系运算符
>、<、<=、>=、==、instanceof
逻辑运算符
&&、||、!
位运算符
&、|、^、~、>>、<<
条件运算符
?:
扩展运算符
+=、-=、*=、/=
包机制
域名倒写
防止命名冲突
package
import
JavaDOC
JDK帮助文档
javadoc
@author
@version
@Since
@param
@return
@throws
流程控制
Scanner
顺序结构
默认 自上而下
选择结构
if 单选择
if else 双选择
if else if else 多选择结构
switch
jdk支持String类型
case穿透
break
default
循环结构
while
do while
for
九九乘法表
foreach
break & continue
break: 跳出循环
continue:跳过当前循环
go to :带标签continue
return:结束当前方法
方法
什么是方法?
完成特定功能的代码块
方法的定义
修饰符 返回值(参数名){方法体;
return 返回值;
}
return 返回值;
}
方法 的调用
类名.方法
对象.方法
方法重载
名字相同,参数列表相同
命令行传参
给main方法传参(Run AS->Run Confuguration)
可变参数
...
必须放在最后一个参数
递归
自己调用自己,给自己一个出口
面试常问
数组
数组定义
int[] arr = new int[3];
int[] arr = {1,2,3};
数组的使用
通过下标访问数据
ArraryIndexOutofBounds
增强for循环
二维数组
int[][]
Arrays工具类
Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。
排序算法
冒泡排序
选择排序
插入排序
快速排序
面向对象
什么是面向对象?
以类的方式组织代码,以对象的方式封装数据
类与对象
类是对象的抽象:模板class
对象是类的具体
构造方法
构造的重载
默认的无参构造
如果手动定义了有参构造就必须再手动定义一个无参构造
单例模式:需要私有化构造器
new 对象
栈存放引用
堆存放具体的对象
封装
属性私有、get、set
继承
extends
Java是单继承,只能继承一个父类
Object
方法重写
子类拥有父类的全部特性
子类修饰符不能高于父类
多态
父类的引用指向子类的对象 Person p = new Student();
子类重写父类的方法
instanceof 关键字,如果匹配可以进行类型间的转换
关键字
static:类变量、类方法
final:修饰类,不可继承
修饰方法,不可重写
修饰变量,变量变常量
修饰方法,不可重写
修饰变量,变量变常量
this
super
权限修饰符
private:本类
默认: 本类|同包
protected: 本类|同包|不同包下的子类
public:最大权限
接口
interface
约束,之定义方法名
子类实现接口,必须重写其中的方法
只有一个方法的的接口叫函数式接口,可以使用lambda表达式简写
接口比抽象类更抽象
一个类可以实现多个接口
接口与接口:继承关系,可以单继承,也可以多继承
内部类
普通内部类
作为类的一个字段直接定义即可
静态内部类
静态内部类也是作为一个外部类的静态成员而存在
匿名内部类
在方法参数中新建一个接口对象 / 类对象,并且实现这个接口声明 / 类中原有的方法了
局部内部类
其声明在一个方法体 / 一段代码块的内部,
重要知识点
异常
Throwable
Exception
RuntimeException
可以处理,也可以不处理。一般就是程序出问题了,需要改程序。
非RuntimeException
是需要进行处理的,否则编译不通过。
Error
AWT错误
JVM错误
StackOverFlowError
OutofMerroryError
五个关键字
try
catch
finally
throw
throws
自定义异常
继承自Exception
常用类
Object
hashCode()
返回该对象的哈希码值。
getClass()
返回此 Object 的运行时类
toString()
返回该对象的字符串表示。建议重写
equals()
比较对象是否相同。建议重写
finalize()
被垃圾回收器对象调用,用于处理垃圾
clone()
克隆对象
wait()
线程等待
notify()
线程唤醒
notifyAll()
唤醒所有等待线程
Math
常见的数学运算
Random
生成随机数
UUID
File:文件或目录的抽象表示
创建
CreateNewFile() :创建文件
mkdir() :单级文件夹
mkdirs() :多级文件夹
查看
getAbsolutePath():获取绝对路径
getPath():获取相对路径
getName():获取名称
lastModified():获取最后一次修改时间的毫秒值
length():获取文件的大小
public String[] list():返回的是给定目录下的所有文件或者文件夹的名称数组
public File[] listFiles():返回的是给定目录下的所有文件或者文件夹的File数组
判断
isDirectory()
isFile()
exists()
isHidden()
canWrite()
canRead()
删除 delete
包装类
自动拆箱和装箱
Data
Data
1.构造
public Date()
public Date(long date)
2.成员方法
public long getTime()
public void setTime(long time)
SimpleDateFormat
1.构造
public SimpleDateFormat(String pattern)
常见pattern:yyyy-MM-dd HH:mm:ss
常见pattern:yyyy-MM-dd HH:mm:ss
2.成员方法
public final String format(Date date)
public Date parse(String source)
Calendar
1.得到对象
public static Calendar getInstance()
2.成员方法
public int get(int field)
public void add(int field,int amount)
public final void set(int year,int month,int date)
String
final 不可变性
操作量少
StringBuffer
可变长
append
线程安全
效率低、安全
StringBuilder
与StringBuffer功能类似
线程不安全
效率高
System
成员方法
public static void gc()
public static void exit(int status)
status=0 正常退出
status=1或非0 非正常退出
public static long currentTimeMillis()
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
集合框架
Collection
List:元素有序,可重复
ArraryList
add
remove
contains
size
场景:底层数据结构是数组,查询快,增删慢
安全:线程不安全,效率高
LinkedList
getFirst
getLast
removeFirst
removeLast
.....
场景:底层数据结构是链表,查询慢,增删快
安全:线程不安全,效率高
Set:元素无序,不可重复
HashSet
数据结构:底层数据结构是哈希表
保证元素的唯一性:依赖两个方法hashCode()和equals()。
TreeSet
数据结构:二叉树(红黑树)
保证数据唯一?
根据比较的返回值是否是0
保证元素的排序?
自然排序
让元素所属的类实现Comparable接口
比较器排序
创建集合对象的时候,接受Comparator接口的实现类对象作为构造参数
迭代器:Iterator
迭代器遍历时,不能同时修改待遍历的对象
for循环
CopyOnWriteArraryLsit
Map
由键值对组成;键唯一,值可以重复;数据结构针对键有效
HashMap 重点
JDK1.7 :数组+链表
JDK1.8:数组+链表+红黑树
LinkedHashMap
TreeMap:按键排序
键是红黑树结构,可以保证键的排序和唯一性
比较器排序
HashMap<String,String>
自然排序
HashMap<Student,String>
Collections工具类
A:排序:sort(List<T> list)
B:二分查找:binarySearch(List<?> list,T key)
C:最大值: max(Collection<?> coll)
D:反转:reverse(List<?> list)
E:随机置换:shuffle(List<?> list)
IO流
作用:用来处理设备之间的数据传输
字节流
InputStream
FileInputStream
1.构造
FileInputStream(File file)
FileInputStream(String name)
2.成员方法
public int read():一次读一个字节
public int read(byte[] b):一次读取一个字节数组
OutputStream
FileOutputStream
1.构造
FileOutputStream(File file)
FileOutputStream(String name)
public FileOutputStream(String name,boolean append):文本追加
2.成员方法
public void write(int b)
public void write(byte[] b)
public void write(byte[] b,int off,int len)
字符流
Reader
Writer
处理流
字节缓存流
BufferedWrite
BufferedRead
BufferedInputStream
BufferedOutputStream
转换流
字符输出流:OutputStreamWriter
字符输入流:InputStreamReader
操作基本数据类型
DataInputStream
DataOutputStream
操作字节数组
ByteArrayInputStream
ByteArrayOutputStream
操作字符数组
CharArrayReader
CharArrayWrite
操作字符串
StringReader
StringWriter
打印流
PrintStream
PrintWriter
序列化流
ObjectOutputStream
序列化流
ObjectInputStream
反序列化流
Properties集合
Properties和IO流的结合使用
NIO包下的IO流
节点流
多线程
进程与线程
run().start();
线程的创建方式
Thread
start0,本地方法:Java无权调用,交给底层的c处理
private native void start0 ()
Runnable
函数式接口
lambda
Callable
可以有返回值
静态代理
new Thread(Runnable).start();
Lambda表达式
函数式编程
避免内部类定义过多
new Thread(()->{System.out.print();}).start();
手动推到一遍lambda我表达式
线程的状态
新建状态
就绪
运行
阻塞
死亡
常用的方法
sleep
join
yield
isLive
start
setPriority
interrupt
线程的同步
多个线程对象操作同一个资源,并发
前提:队列+锁
Synchronized
同步方法(弊端:锁的太多)
同步代码块(常用)
第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面拿到锁才能进去
死锁:两个人都抱着对方的锁
互斥
请求与保持
不剥夺条件
循环等待条件
Lock(优先级最高)
ReenTrantLock
lock
trylock
unlock
线程的通信
缓冲区:消息队列
红绿灯:标志位
wait();
waitAll();
线程池(pool)
池化技术
池的大小
最大连接数
保持时间
.......
网络编程
IP
端口
Socket编程
TCP
三次握手
四次挥手
面向连接
UDP
无连接
Packet
URL
聊天通信
文件上传
注解与反射
注解
元注解
内置注解
自定义注解
反射注解
反射
Class
newInstance();
类加载机制
Method
invoke(user3,"秦将3");
存在重载,也需要写参数的类型
Field
set(user4,"秦将4");
Constructor
newInstance();
获取的时候需要传递参数的class类型
破坏私有关键字
setAccessible(true);
性能分析
正常>检测关闭的反射>默认的反射
反射获取注解、泛型...
单例模式的探究
Stream
ForkJion
效率对比
0 条评论
下一页