BASE
BASE
落星湖基础语法
updating…
是的,如你所见,正在从后往前补,还没补到 :-(
面向对象
updating….
是的,如你所见,正在从后往前补,还没补到 :-(
API
常用API(一)
updating…
是的,如你所见,正在从后往前补,还没补到 :-(
常用API(二)
Objects类
base
所有类的对象都可以用,默认继承
1 | public String toString(){//默认输出地址,主要用于子类重载方法,返回具体内容 |
浅克隆/深克隆
浅拷贝:堆内存中拷贝地址
深拷贝:数据直接拷贝,字符串拷贝地址(字符串常量池),其他对象则创建新对象—–重载
一些静态方法
1 | Objects.equals(s1,s2);//相比字符串的equals方法(注意空指针异常),先进行非空判断 |
包装类
把基本数据类型包装成对象
一些静态方法(用于泛型和集合(引用数据类型))
1 | //应用于泛型和集合 |
StringBuilder
容器,方便修改字符串
1 | StringBuilder s=new StringBuilder("111");//直接返回内容 |
相比String,频繁拼接修改等效率更高
StringBuffer
与StringBuilder用法一致
StringBuilder 线程不安全
StringBuffer 线程安全
StringJoiner
高效简洁
1 | StringJoiner s1=new StringJoiner(",","[","]"); |
Math
常用静态方法
1 | public static int abs(int a) //绝对值 Math.abs(1.2) |
System
静态方法
1 | public static void exit(int status)//终止Java虚拟机 |
Runtime
单例类
常用方法
1 | Runtime r=Runtime.getRuntime(); |
BigDecimal
解决浮点运算失真
1 | //小数转字符串转BigDecimal |
时间日期
传统(非重点)
Date
获取时间/日期
1 | Date d=new Date(); |
SimpleDateFormat
日期格式化
1 | //时间/日期格式化 |
Calender
当前日历,主要用于修改日期时间
***可变对象
1 | Calendar c=Calendar.getInstance(); |
JDK8新增(主要)
LocalDate LocalTime LocalDateTime 代替Calendar
均为不可变对象,三个用法几乎相同
1 |
|
ZoneId ZoneDateTime 代替Calendar
Instant
DateTimeFormatter
Duration Period
Arrays
JDK8新特性
Lambda表达式
方法引用
集合框架
IO流
File(操作文本)
一些操作
1 | File f1=new File("D:\\hexo");//绝对路径 |
递归
遍历多级文件夹/删除非空文件夹
直接/间接
IO(读写文本数据)
字符集
- ASCII
- GBK 汉字2 英文数字1
- Unicode UTF-8 汉字3 英文数字1
字符集编码getBytes("GBK")
/解码new String(bytes1,"GBK")
IO流-字节流 字符流
(抽象类)
文件复制
字节输入流 InputStream->FileInputStream
字节输出流 OutputStream->FileOutputStream读写文本
字符输入流 Reader->FileReader
字符输出流 Writer->FileWriter
1 | InputStream is=new FileInputStream("D:\\hexo");//覆盖 |
- 文件复制 输入流—>输出流
释放资源
- try-catch-finally
- try-with-resource
1 | try (OutputStream os = new FileOutputStream("D:\\hexo")){ |
IO流-缓冲流 转换流 打印流 数据流 序列化流
缓冲流 BufferedInputStream / BufferedOutputStream / BufferedReader
br.readLine()
/ BufferedWriterbw.newLine()
包装、提高原始流读写效率转换流 InputStreamReader / OutputStreamWriter
解决不同字符集乱码问题打印流 PrintStream
ps.println() ps.write()
/ PrintWriter
高效打印数据
重定向System.setOut(ps)
数据流 DataInputStream
dis.writeUTF()
/ DataOutputStreamdos.writeUTF()
传入数据和数据类型序列化流 ObjectInputStream
oos.writeObject()
/ ObjectOutputStreamoos.readObject()
序列化接口implements Serializable
成员变量前加上transient
不参与序列化
序列化多个对象:ArrayList
已实现序列化接口
IO框架
封装对文件、数据进行操作的代码
Commons-io 框架
1 | //导入框架 融合 |
特殊文件
Properties属性文件
本质->map
1 | Properties properties=new Properties(); |
XML文件
本质->数据格式
<tags>
做系统的配置文件 / 特殊数据结构网络传输
Dom4j->解析XML框架
1 | //解析 |
约束XML书写—限制格式
日志
记录运行过程中的信息
Logback框架
1 | //slf4j-api: 日志接口 |
设置日志级别
1 | (trace) debug //最低级别 |
多线程
创建多线程
1 | //1.继承Thread |
Thread常用方法
- run() start()
- currentThread()
- getName() setName() //构造器直接写
- sleep()
- join() //当前线程先执行完
线程安全
线程同步
解决线程安全问题
加锁
1 | //1.同步代码块 |
线程通信
各线程间告知状态
- this.wait()
- this.notifyAll()
线程池
复用线程
创建线程池 接口ExecutorService
1.ExecutorService实现类ThreadPoolExecutor
1 | //public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) |
2.Executors(不使用 有弊端)
1 | //底层基于ExecutorService实现 |
并发 并行 生命周期
CPU轮询
乐观锁
线程安全+同时执行
网络通信
基本的通信架构 CS/BS
IP地址
公网/局域网/特殊IP
InetAddress类InetAddress.getLocalHost(); InetAddress.getByName(); InetAddress.isReachable();
端口号
周知/注册/动态协议
OSI TCP/IP
传输层:UDP(效率高)/TCP(可靠) –>三次握手连接 四次挥手断开
UDP通信
无连接,不可靠,发送数据包
DatagramSocket类
TCP通信
面向连接,可靠通信,三次握手
Socket类