JAVA知识——JAVA基础

本文详细介绍了Java环境配置、IDEA的安装与使用,包括导入模块的注意事项和模块删除方法。讲解了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循环实现的,是个单线程

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值