• JAVA知识——JAVA基础


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述配置PATH和JAVAHOME
    在这里插入图片描述
    上面是单一用户有效,下面是所有用户有效,粘贴路径招贴到bin

    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    IDEA安装

    在这里插入图片描述IDEA学习
    在这里插入图片描述在这里插入图片描述导入模块
    在这里插入图片描述最好是新建模块把模块复制过来,删除remove知识在页面上删除,实际的删除需要到磁盘里直接删除,或者下图真正删除但是删不干净,新建没法新建
    在这里插入图片描述在这里插入图片描述如果再没删干净就去idea文件夹下打开然后删除这一行
    在这里插入图片描述然后再重启IDEA

    打开工程也是直接在黑点打开
    JAVA基础语法学习
    在这里插入图片描述注释不影响程序执行的原因是因为编译之后的class文件没有注释了就

    音视频图片都是二进制形式存储
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    new出来的都放在堆内存

    在这里插入图片描述在这里插入图片描述

    对象的赋值是地址的传递

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述左手shift然后G

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述在这里插入图片描述一个放在常量池一个放在堆内存

    在这里插入图片描述只要不是双引号来的值都是放在堆内存
    一个在运行阶段才知道s2的值一个在编译阶段就自动转化

    双等号比较的是地址,比较字符串内容的API是equals
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述static是所属于类的,最好用类名访问,用对象访问也可以只不过不推荐,是共享的,public的。
    如果没有static那就是属于每个对象的,只能对象来访问,也叫作实例成员变量。
    在这里插入图片描述static变量存储在静态变量区

    在同一个类中,静态成员方法的使用可以直接使用。

    在这里插入图片描述

    在这里插入图片描述
    因为this是指当前对象

    一些工具类就是静态的可以直接用类名调用,如果每个人创建对象才能调用方法就太占用内存了,工具类不用创建对象,所以就把构造器藏起来,把构造器设成private

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述懒汉单例啥时候用啥时候做饭
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述this访问子类空间,super访问父类空间
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    防止出现歧义,虽然不支持多继承但是支持多层继承,如何多个同名方法,那就按最近的方法调用
    在这里插入图片描述访问的话就近原则,先自己在爸爸在爷爷
    在这里插入图片描述

    在这里插入图片描述
    必须过继过来的才能重写,静态方法没过继过来,用super访问

    调用父类的有参构造器是为了初始化继承父类的数据
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述编译之后常量就消失了,而常量的内容也就全部替换到文本中了
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    一个void一个int这时候不能多继承

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述乌龟不能转狗

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    匿名内部类就是没有类名
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    字符串的equals已经被重写了,是访问内容是否相等
    在这里插入图片描述

    更加安全如果比较的双方有为空的也不会报错,会先判断是否为null
    a.equals需要先判断a是否为Null

    在这里插入图片描述需要tostring转化成string类型
    在这里插入图片描述

    在这里插入图片描述
    只占用一个内存内容可变
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    string类提供的API
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

    arrays类
    在这里插入图片描述

    Lambda简化匿名内部类
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    数组和集合
    在这里插入图片描述集合存储对象,不支持基本类型,如果存储请用包装类,
    集合的功能更强大,提供很多的增删改查API,元素只有索引啥的
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述在这里插入图片描述
    通配符,泛型的上下限

    新的开始 set map
    在这里插入图片描述在这里插入图片描述哈希set
    在这里插入图片描述
    在这里插入图片描述object类的就是什么都可以调用,int,string都可以调用
    在这里插入图片描述在这里插入图片描述默认长度是16,当到了16*0.72=12是就自动扩容到原来的两倍

    在这里插入图片描述在这里插入图片描述想要去除重复的值就必须吧equal和hashcode重写

    在这里插入图片描述哈希LINKset加了一个双链表记录存储的顺序
    Treeset的整数,字符串都可以排序,对象需要自己制定规则,方式一

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述默认先用二
    可变参数
    在这里插入图片描述接收时用的就是数组,只要是数组直接打印得到的都是地址,如果想输出数组的值就是Arrays.tostring(array)

    在这里插入图片描述化简成为Lamada
    在这里插入图片描述
    Map集合,非常适合做购物业务
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    所有数组都是打地址,所有集合都是打内容

    在这里插入图片描述在这里插入图片描述map.entrySet()+ctrl+alt+v自动补全

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    总结一下HashMap底层是哈希表,Set底层是Map
    在这里插入图片描述集合嵌套

    Collect里面嵌套list,Map里面嵌套list,遍历就是for。。。。。,get()

    不可变集合对象
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    Stream流
    在这里插入图片描述先过滤然后再遍历一个个保存或者打印输出
    在这里插入图片描述在这里插入图片描述在这里插入图片描述Stream的获取
    在这里插入图片描述
    Arrays是数组的工具类,Collection是集合的工具类
    在这里插入图片描述有各种API

    在这里插入图片描述在这里插入图片描述在这里插入图片描述问:哪个类可以解决精度问题,Bigdecimal
    需要把数据都封装成大数据对象

    收集Stream流
    流的收集用collect(Collectors.toList()/toSet)都可以,但是要记住一个流只能收集一回,就消失了。也可以直接toArray收集成为数组,toList,没有toSet,但是这样生成的List不可变
    在这里插入图片描述Lamada表达式还可以变成String::new(方法引用类型)

    异常处理
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    面试常问写出几个运行时异常
    1ArrayIndexOutofBoundsException数组索引异常(超过数组大小)
    2NUllpointException空指针异常(null的length)
    3ClassCastException类型转换异常(int转string)
    4ArithemeticException数字操作异常(除0)
    5NumberformatException数字转换异常(字符串转int)

    在这里插入图片描述善意的提醒你看一看,如果没问题就抛出异常,运行时异常的错误不容易犯,没必要提醒在这里插入图片描述在这里插入图片描述默认的异常处理方式是层层往上抛结束运行
    自我干预异常处理:
    在这里插入图片描述在这里插入图片描述快捷键直接alt+回车
    如果多行就cirl+alt+t

    在这里插入图片描述打印异常栈信息

    在这里插入图片描述在这里插入图片描述
    运行时异常的处理方式:
    运行时异常自动抛出,在外层捕获处理就行

    自定义异常
    在这里插入图片描述在这里插入图片描述注意throw和throws的区别

    在这里插入图片描述

    日志框架
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    文件的操作
    在这里插入图片描述在这里插入图片描述字节流音视频文件,字符流文本文件

    在这里插入图片描述file创建对象支持绝对路径也支持相对路径

    在这里插入图片描述
    在这里插入图片描述mkdir创建一级,mkdirs创建多级
    在这里插入图片描述在这里插入图片描述在这里插入图片描述递归
    在这里插入图片描述
    字符集
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述每个国家的字符都有自己特色的首字节,如首字节负数就说明是中文,那读三个字节
    在这里插入图片描述
    IO流在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述String =new String(byte[],几开始,读取长度);

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    写字节的时候写完一定要刷新,然后释放流,直接释放流就自动刷新了

    每次学数据都会把之前的数据清空,因为管道一创建就会清空,可以再定义留的时候加个参数true就变成了追加数据

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述总结:字节流适合做文件的拷贝,不适合中文的输入输出

    资源释放的两种方式
    try catch finally
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在trycatch之外也能用,但是trycatch之外已经关闭了,所以没意义,更多的还是trycatchfinally

    字符流的读取
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    转换流

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    对象序列化

    在这里插入图片描述把对象存文件

    在这里插入图片描述
    继承的字节输出流
    对象要序列化必须实现Serializable接口
    在这里插入图片描述在这里插入图片描述
    对象反序列化
    在这里插入图片描述在这里插入图片描述
    修饰的对象不再序列化,比如密码,反序列化出来也是null
    可以定义一个序列版本号

    打印流
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述打印流的重定向,更改,从控制台改成别的文件

    Propertise属性文件
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    IO框架

    在这里插入图片描述多线程
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述多线程实现方法一
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述多线程实现方法二

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述第三种方式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述对于多个子线程无法区分的情况下可以定义名称,然后在子线程中用currentThread获取哪个子线程在跑
    获取主线程的话可以用currentThread

    在这里插入图片描述
    通过构造器取名字

    在这里插入图片描述实际开发时不会为线程取名字,就用默认的名字
    线程同步
    在这里插入图片描述同步代码块

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述静态方法属于所有线程共同访问的所以用一个字节码对象就可以

    同步方法

    在这里插入图片描述
    把核心方法加上就行比如取钱

    在这里插入图片描述

    LOCK锁

    功能更强,API更多,最好定义为final
    同时在上锁后放在try catch里,finally放解锁操作,也就是就算出异常也必须解锁

    在这里插入图片描述
    线程通信

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述用当前同步锁对象调用

    线程池
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述在这里插入图片描述在这里插入图片描述线程池处理Callable任务
    在这里插入图片描述在这里插入图片描述工具类里面的方法绝大多数都是静态方法直接调用就完事了。
    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述
    弊端是参数不可控,容易堆积大量的任务以及创建大量的线程

    在这里插入图片描述定时器
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述以后用ScheduleEecutorsService定时器
    在这里插入图片描述
    在这里插入图片描述并发与并行
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    sleep的时候并不会释放锁对象,等到了时间继续执行,wait就会把锁让出去,对应的是唤醒操作notify
    在这里插入图片描述新建之后就是就绪状态

    网络编程

    在这里插入图片描述在这里插入图片描述BS一站式开发,兼容性强
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    也可以ping域名,本机的域名就是localhost

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述不同设备上的同种程序的端口号一样
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述UDP传输
    实现了一发一收
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    多发多收
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述用子类加入组播组

    TCP通信

    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述上面是用while循环实现的,是个单线程

    下面用多线程让和多个客户端通信

    在这里插入图片描述

  • 相关阅读:
    使用Spring Boot注册整合方式整合Servlet三大组件
    Element Plus table formatter函数返回html内容
    人脸106和240点位检测解决方案
    【DataX】Dolphinscheduler调度Datax任务读取Hive分区表案例
    react源码中的hooks
    vue中的传值
    Java设计模式 | 七大原则之开闭原则
    4.cmake-更好的hello-world
    Python之第十章 IO及对象列化
    CountDownLatch使用方式
  • 原文地址:https://blog.csdn.net/nalidour/article/details/125438751