Java进阶
未读时人不识凌云木,直待凌云始道高
什么是IO
把数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。
Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。
IO的分类
根据数据的流向分为:输入流和输出流。
输入流 :把数据从其他设备上读取到内存中的流。
输出流 :把数据从内存 中写出到其他设备上的流。
格局数据的类型分为:字节流和字符流。
字节流 :以字节为单位,读写数据的流。
字符流 :以字符为单位,读写数据的流。
顶级父类
输入流
输出流
字节流
字节输入流 InputStream
字节输出流 OutputStream
字符流
字符输入流 Reader
字符输出流 Writer
字节流
一切皆为字节
一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时 ...
鹏北海,凤朝阳,又携书剑路茫茫
概述
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径
这个路径是可以存在的,也是不允许存在的
构造方法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
1234567891011121314151617// 文件路径名String pathname = "D:\\aaa.txt";File file1 = new File(pathname); // 文件路径名String pathname2 = "D:\\aaa\\bbb.txt" ...
Java进阶
未读且长凌风翮,乘春自有期
异常概念
异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:
异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.
异常体系
异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error与java.lang.Exception,平常所说的异常指java.lang.Exception。
异常的处理方式
JVM默认处理方式
把异常的名称,异常的原因以及异常出现的位置等信息输出在了控制台
程序停止执行,下面的代码不会再执行了
自己处理
捕获异常try…catch
如果异常出现的话,会立刻终止程序,所以我们得处理异常:
该方法不处理,而是声明抛 ...
操千曲而后晓声,观千剑而后识器
基本规则
把已经有的方法拿过来用,当做函数式接口中抽象方法的方法体
方法引用的初使用
123456789101112131415161718192021222324252627282930313233343536373839404142package function;import java.util.Arrays;import java.util.Comparator;public class FunctionDemo1 { public static void main(String[] args) {// 创建一个整型数组,对其倒序排序 Integer[] arr = {1, 5, 6, 2, 4, 8, 3, 9};//匿名内部类 Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integ ...
Java进阶
未读追风赶月莫停留,平芜尽处是春山
Stream流的优点
直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印
Stream流把真正的函数式编程风格引入到Java中
代码简洁
案例需求按照下面的要求完成集合的创建和遍历
创建一个集合,存储多个字符串元素
把集合中所有以”张”开头的元素存储到一个新的集合
把”张”开头的集合中的长度为3的元素存储到一个新的集合
遍历上一步得到的集合
12345678910111213141516171819202122232425public class MyStream1 { public static void main(String[] args) { //集合的批量添加 ArrayList<String> list1 = new ArrayList<>(List.of("张三丰","张无忌","张翠山","王二麻子","张 ...
志之难也,不在胜人,在自胜也
集合与数组的区别
相同点:
都是容器,可以存储多个数据
不同点:
数组的长度是不可变的,集合的长度是可变的
数组可以存基本数据类型和引用数据类型
集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类
集合体系结构
基本数据结构
栈
特点:先进后出,后进先出
队列
特点:先进先出,后进后出
数组
特点:查询快,增删慢
链表
链表中的结点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址
查询慢,增删快
树
度:没一个节点的子节点数量
二叉树中,任意节点的度<=2
树高:树的总层数
根节点:最顶层的节点
二叉树的遍历方式
前序遍历:根左右
中序遍历:左根右
后序遍历:左右根
层序遍历:
二叉查找树
弊端:但数据有序、单一,会造成树偏移
平衡二叉树
平衡二叉树保持平衡机制(旋转)
左旋
自定义链式左旋:左旋后的节点即将作为根节点且不全有左右字数
1. 首先找到不平衡的节点,也就是要确定支点
2. 进行左旋
3. 左旋步骤
4. 左旋后
自定义叉式左旋:左旋 ...
Java进阶
未读青春须早为,岂能长少年
函数式编程
函数式编程(Function programing)是一种思想特点,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
Lambda表达式就是函数式思想的体现。
Lambda表达式的标准格式
Lambda表达式是JDK8开始后的一种新语法形式
()->{
}
() 对应着方法的形参
-> 固定格式
{} 对应着方法的方法体
面向对象:先找到对象,让对象做事情。
123456789101112Arrays.sort(arr,new comparater(){ @override public int compare(Integer o1 ,Integer o2){ return o1 - o2; }})/*将匿名内部类中的对象删除,注重方法*/Arrays.sort(arr,(Integer o1 ,Integer o2)->{ return o1 - o2; })
注意点:
Lambda表达式可以用来简化匿名 ...
悟已往之不谏,知来者之可追
在常用API中,只需记住类名、类的作用,会查API帮助文档
类Math:数学计算的工具类
final类,不可继承
字段:
static double E − 这是比任何其他值都更接近自然对数底 e 的双精度值。
static double PI − 这是比任何其他值都更接近 pi 的双精度值,pi 是圆的周长与其直径的比值。
原理:
private Math(){} 私有化构造方法,外部不能创建其对象。
静态方法:类名.方法名 调用
123456789Math.abs(); //绝对值 JDK15之后有异常处理 Math.absExact();Math.ceil(); //向上取整Math.floor(); //向下取整Math.round(); //四舍五入Math.max(); //取最大值Math.min(); //取最小值Math.pow(a,b); //a^bMath.sqrt(); //平方根Math.random(); //随机数 范围[0-1)</code></pre></details>
类Sys ...

