![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 62
雨霖先森
小白菜变为大白菜
展开
-
深入类加载机制
首先,我们定义一个待加载的普通Java类:Test.java。} }注意:如果你是直接在当前项目里面创建,待Test.java编译后,请把Test.class文件拷贝走,再将Test.java`删除。因为如果Test.class存放在当前项目中,根据双亲委派模型可知,会通过sun.misc.Launcher$AppClassLoader类加载器加载。为了让我们自定义的类加载器加载,我们把Test.class文件放入到其他目录。原创 2022-11-05 18:01:07 · 340 阅读 · 0 评论 -
Stream + 并行流 +Optional +接口的方法 +日期组件+重复注解及类型注解
包路径类名描述java.time针对日期和时间操作的包LocalDate用于表示日期的类LocalTime用于表示时间的类用于表示日期时间的类Instant时间戳类(1970.1.1 0:0:0 到现在的毫秒数Period两个日期间隔类Duration两个时间间隔类针对日期时间特殊格式操作的包针对时间日期时间格式化操作的包格式化日期时间类针对时间矫正操作的包针对时区操作的包。原创 2022-11-05 17:57:51 · 666 阅读 · 0 评论 -
JDK1.8新特性介绍+Lambda+函数接口+方法、构造方法和数组引用及Stream流
Lambda是一个匿名函数(方法), 允许把函数作为一个方法的参数。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。一般都是优化匿名内部类。原创 2022-11-05 17:55:13 · 508 阅读 · 0 评论 -
注解与反射机制
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口分析:@interface用来声明一个注解,格式:public @interface注解名{定义内容}其中的每一个方法实际上是声明了一个配置参数.方法的名称就是参数的名称.返回值类型就是参数的类型(返回值只能是基本类型、Class、String、enum)可以通过default来声明参数的默认值如果只有一个参数成员,一般参数名为value()原创 2022-11-03 22:09:08 · 338 阅读 · 0 评论 -
网络编程及三大协议(TCP + UDP + Http)
UDP(User Datagram Protocol)用户数据报包协议,UDP和TCP位于同一层-传输层,但它对于数据包的顺序错误或重发没有TCP可靠;UDP是一种面向无连接的通信协议。UDP向应用程序提供一种发送封装的原始IP数据报的方法,并且发送时无需建立连接,不保证可靠数据的传输UDP — 发短信TCP — 打电话new SendThread(socket , "127.0.0.1" , 9099 , "马超") . start();} }原创 2022-11-01 21:38:30 · 4619 阅读 · 5 评论 -
IO流的字符流+对象流+打印流+内存流+随机访问流(2)
abstract class Reader -- 字符输入流的基类(抽象类)abstract class Writer -- 字符输出流的基类(抽象类)class InputStreamReader extends Reader -- 字符输入转换流class OutputStreamWriter extends Writer - 字符输出转换流作用:将字节流转换为字符流class FileReader extends InputStreamReader -- 文件字符输入流。原创 2022-10-31 22:43:35 · 236 阅读 · 0 评论 -
File类和IO流的字节流(1)
abstract class InputStream --- 字节输入流的基类(抽象类)abstract class OutputStream -- 字节输出流的基类(抽象类)class FileInputStream extends InputStream --- 文件字节输入流class FileOutputStream extends OutputStream - 文件字节输出流class FilterInputStream extends InputStream --- 过滤器字节输入流。原创 2022-10-31 22:39:33 · 159 阅读 · 0 评论 -
线程池的介绍
1.使用无界任务队列,线程池的任务队列可以无限制的添加新的任务,而线程池创建的最大线程数量就是你corePoolSize设置的数量,也就是说在这种情况下maximumPoolSize这个参数是无效的。2.哪怕你的任务队列中缓存了很多未执行的任务,当线程池的线程数达到corePoolSize后,就不会再增加了。3.若后续有新的任务加入,则直接进入队列等待,当使用这种任务队列模式时,一定要注意你任务提交与处理之间的协调与控制,不然会出现队列中的任务由于无法及时处理导致一直增长,直到最后资源耗尽的问题。原创 2022-10-31 22:37:16 · 186 阅读 · 0 评论 -
生产者消费者模型+仓储模型及Java自带的线程池
1.产品类 – Phone2.生产者线程 – Producer3.消费者线程 – Consumer。原创 2022-10-31 22:36:06 · 362 阅读 · 0 评论 -
异常机制的学习
1.异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程。 2.设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。 3.Java语言使用异常处理机制为程序提供了异常处理的能力原创 2022-10-30 15:17:01 · 93 阅读 · 0 评论 -
数据安全+线程锁+多线程访问临界资源时的数据安全问题
1.在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,它已经有了相应的内存空间和其它资源,但还处于不可运行状态。新建一个线程对象可采用线程构造方法来实现。2.例如:Thread thread=new Thread();原创 2022-10-30 15:14:57 · 454 阅读 · 0 评论 -
进程及线程的常用方法
1.线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源2.一个进程 可以有 多个线程:各个线程都有不同的分工。原创 2022-10-30 15:13:36 · 257 阅读 · 0 评论 -
手撕Iterator底层源码
分析源码:一定要找场景。原创 2022-10-30 15:03:07 · 138 阅读 · 0 评论 -
手撕Map系列源码分析
1 、hashmap底层实现: 1.8 使用的是数组 + 链表 + 红黑树 2 、 HashMap 第一次扩容的容量是多大?容量是 16 ,加载因子是 0.75 ,阈值是 12 -- - 控制下次hash桶扩容的 3 、位置如何确定?为什么hash桶的长度必须是 2 的多少次方?原创 2022-10-30 15:01:25 · 175 阅读 · 0 评论 -
手撕LinkedList底层源码
经验:平时我们使用ArrayList更多,因为ArrayList查询快,而项目中查询业务是最多的。 LinkedList比ArrayList多队列模式和栈模式。 添加 – 扩容的情况下:LinkedList快。 添加 – 不扩容的情况下:ArrayList快。 LinkedList:双向链表。 ArrayList:一维数组。 删除:LinkedList快。 查询:ArrayList快。 修改:ArrayList快。原创 2022-10-30 14:59:48 · 173 阅读 · 0 评论 -
手撕ArrayList底层源码
减8的位置是为了保存数组的一些头部信息(元素类型、内存地址…初始化容量最大值是Integer.MAX_VALUE-8。Object类型的一维数组。默认初始化容量是10。是原来长度的1.5倍。原创 2022-10-30 14:57:51 · 93 阅读 · 0 评论 -
集合之Map家族的TreeMap + Sort +Properties及Collections工具类和总结
.Collection 与 Map的区别1.Collection 存单个值,可以获取迭代器进行遍历2.Map存两个值(Key-Value),不可以获取迭代器,不能遍历(Map可以间接遍历)原创 2022-10-26 00:47:17 · 222 阅读 · 0 评论 -
集合的加强概括
1.集合是JAVA API所提供的一系列类,可以用于动态存放多个对象(集合只能存对象)2.集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类)3.集合类全部支持泛型,是一种数据安全的用法。原创 2022-10-25 10:10:18 · 148 阅读 · 0 评论 -
集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap
集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap。原创 2022-10-16 12:01:15 · 163 阅读 · 0 评论 -
集合之Collection家族的 List接口+LinkedList+Vector+Stack及Set接口+HashSet+LinkedHashSet+TreeSet
Vector是JDK1.0开始就存在集合类(元老级别的集合类),集合框架的概念是从JDK1.2开始,Java的设计者为了将Vector保留下来,又让Vector多实现了一个接口(List)不相同 – JDK1.7头插法、JDK1.8尾插法 – (单向链表)相同 — 则不存入(去重的效果)ArrayList线程不安全的。Vector线程安全的。原创 2022-10-16 11:59:24 · 304 阅读 · 0 评论 -
集合之Collection家族的 List接口+ 迭代器+泛型
1.集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象)2.集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类) 3.集合类全部支持泛型,是一种数据安全的用法。原创 2022-10-16 11:57:01 · 312 阅读 · 0 评论 -
常用类之Math类+Random类+ Runtime类+System类+大数值运算类+枚举
工资结算:Chinese(语文老师)、Math(数学老师)、English(英语老师)、人事(行政)、财务(行政)、校长(行政)员工类别:行政、讲师。原创 2022-10-16 11:50:30 · 122 阅读 · 0 评论 -
常用类之包装类+字符串+正则表达式Pattern类+Date类+SimpleDateFormat类+Calendar类
/创建StringBuffer的对象,默认缓冲区:16个字符 //StringBuffer sb = new StringBuffer();//创建StringBuffer的对象,自定义缓冲区:100个字符 //StringBuffer sb = new StringBuffer(100);//创建StringBuffer的对象,自定义缓冲区:"123abc".length() + 16 个字符 StringBuffer sb = new StringBuffer("123abc");原创 2022-10-16 11:46:56 · 207 阅读 · 0 评论 -
内部类(2) + 学生管理系统
/获取字符串中字符长度 int len = name . length();if(sex == '男' || sex == '女') {} }//默认容量 private static final int DEFAULT_CAPACITY = 3;//学生容器 private Student [ ] stus;//元素个数/指针 private int size;原创 2022-10-16 11:44:49 · 148 阅读 · 0 评论 -
接口+多态+对象转型及内部类(1)
/类的多态:子类对象指向父类引用 //父类引用中存储的是子类对象在堆中开辟的地址 Vehicle v = new Plane();System . out . println("欣赏沿途的风景...");} }//交通工具类 public abstract class Vehicle {}} }System . out . println("飞机:飞");System . out . println("飞机:跳伞");} }原创 2022-10-09 23:52:48 · 171 阅读 · 0 评论 -
Object类+final关键字+抽象类及抽象方法
一、Object类 含义:该类是所有的类的基类/超类,一个类没有明确继承的父类,都默认继承Object二、final关键字 -- 最终的1.作用: 1.修饰类:该类不能被继承2.修饰方法:该方法不能被子类重写3.修饰变量:该变量变为常量,不能被重新赋值(常量存储在常量池中,直到项目结束时才会被销毁 2.经验: 1.工具类可以使用final修饰 2.程序中遇到一个不变的量,就可以设置为常量 3.常量的原创 2022-10-08 22:59:05 · 218 阅读 · 0 评论 -
深入继承+super关键字+方法重写+访问修饰符及五子棋
深入继承+super关键字+方法重写+访问修饰符及面向对版的象五子棋。原创 2022-10-08 01:42:14 · 121 阅读 · 0 评论 -
static关键字+静态代码块+继承及Arrays
static关键字+静态代码块+继承及Arrays。原创 2022-10-08 01:39:35 · 128 阅读 · 0 评论 -
面向对象的特性和封装及this关键字
封装 1.思想:对于属性的一种保护(让属性不能在外界随意访问)2.好处:操作属性时可以添加额外的功能 3.步骤:1.私有化属性(目的:不能让外界直接访问2.添加get(获取)/set(设置)的方法(目的:向外界提供获取、设置的方法,并且可以在方法中设置附加功能)原创 2022-10-08 01:32:32 · 97 阅读 · 0 评论 -
方法与数组之二维数组及五子棋算法+面向对象的概念
例如:随着小白菜的不断学习,java这门技术也越来越重要,很多人都开启了学习基础知识梳理,本文就介绍了java学习的基础内容。编写了一个简易的五子棋算法提示:以下是本篇文章正文内容,下面案例可供参考。1.含义:二维数组中包含了多个一维数组2.声明:数据类型[][] 数组名3.静态初始化:数据由程序员指定,长度由系统自动分配原创 2022-09-29 10:43:36 · 248 阅读 · 0 评论 -
# 方法与数组之一维数组的各大神通及Arrays工具类(2)
方法的返回值只能返回一个数据,要想返回多个数据,可以将多个数据打包成一个数组。缺点:数组开辟空间是用来存放数据的,这种方式的删除会让空间越变越小。需求:设计一个方法,传入数组,返回最大值和最小值。1.数组可以作为方法的参数传入。需求:传入int数组,求最大值。原创 2022-09-28 12:01:29 · 161 阅读 · 0 评论 -
方法与数组之一维数组的各大神通(1)
1.数组中的数据叫做元素2.每个元素都有编号,叫做索引/下标3.下标从0开始4.数组是引用数据类型5.数组一旦初始化,长度不可改变(意味着数组不可以添加和删除)6.数组在内存中开辟的空间是连续的。原创 2022-09-28 12:00:11 · 76 阅读 · 0 评论 -
静态方法及方法的重载和递归调用
3.参数列表表示调用该方法需要传入的数据,返回值表示方法执行完毕需要传出去的数据,参数列表和返回值不冲突。需求:设置一个方法 - getMax,传入两个int类型的参数,比较最大值并返回。需求2:设计一个方法 - getMax,传入两个int类型的参数,比较最大值。需求4:设计三个方法(a,b,c) ,在a方法中调用b,在b方法中调用c。需求:设计一个方法 - getMax,输入两个int值,返回最大值。需求:设计一个方法,传入int类型的数值 - n,计算n的阶乘。原创 2022-09-26 22:03:40 · 420 阅读 · 0 评论 -
Java特殊的流程控制语句
在switch中使用,表示跳出整个switch分支在循环中使用,表示跳出整个循环(结束循环的意思)原创 2022-09-23 22:00:16 · 117 阅读 · 0 评论 -
Java三大流程控制语句之While和do—while循环语句
老师建议:先彩排一次,如果很令人满意,以后就不用彩排了,小明参加学校组织的歌咏比赛,大赛在即,否则每天都排,直到现场表现满意为止!(1900年1月1日是星期一)。原创 2022-09-23 21:59:17 · 200 阅读 · 0 评论 -
Java三大流程控制语句之for循环及变形记
应用场景:重复性的工作。1.初始化变量> 2.判断条件 -- 必须是boolean值> true -- 执行代码块 -> 更新变量 -> 重复第2个步骤> false - 跳出整个循环语句原创 2022-09-23 21:58:03 · 379 阅读 · 0 评论 -
Java三大流程控制语句之Switch分支
因为switch底层只能识别int类型byte类型:自动向上转型成int类型short类型:自动向上转型成int类型char类型:获取字符的ASCII(int类型)String类型:获取字符串的hash码(int类型)枚举类型:获取枚举对象中的编号(int类型)原创 2022-09-23 21:56:23 · 204 阅读 · 0 评论 -
Java三大流程控制语句之多重分支+嵌套分支
if(){}要么进入、要么不进入if分支可以判断区间if分支可以判断复杂条件if...else...:二选一的情况下使用多重if分支:在多选一的情况下使用if可以无限层嵌套*/原创 2022-09-23 21:55:11 · 697 阅读 · 0 评论 -
Java三大流程控制语句之顺序及分支结构
类名 - (大)驼峰命名法-帕斯卡命名法:每个单词首字母大写 – ps:StudentManagerSystem。 变量 - (小)驼峰命名法:除了第一个单词,其余单词首字母大写 – ps:javaScore。如果小壮Java考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他编写代码。注意:在if分支内定义的变量不能在if外面使用(作用域问题)注意:在代码块内定义的变量不能在外面使用(作用域问题)(健康值算法为:体重(Kg) / 身高(米)的平方)复杂的if分支指的是判断条件复杂。原创 2022-09-23 21:52:16 · 243 阅读 · 0 评论 -
六大金刚运算符---位运算符 争取从小白菜变为大白菜
理解:将十进制的数据转换为二进制做运算。符号:&、|、^、、>>>原创 2022-09-22 19:00:58 · 89 阅读 · 0 评论