
Java
文章平均质量分 80
Java基础到进阶知识,全面详尽 + 源码介绍
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
沙滩de流沙
不积跬步,无以至千里!
既然选择了远方,就要风雨兼程!
展开
-
Caffeine 和 Guava, 本地缓存必备!
因为。原创 2025-01-20 20:51:55 · 134 阅读 · 0 评论 -
算法设计(贪婪算法、漏桶算法、令牌桶算法、计数器)
一、贪心算法也叫贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解,最终通过各环节局部最优解促成整体的最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。1.1贪心算法的基本思路..原创 2020-07-31 10:44:05 · 783 阅读 · 0 评论 -
【一分钟搞懂】Maven依赖原则:最短路径和先声明优先 指的是啥?
你只需要在你的项目中以坐标的方式依赖一个 jar 包,Maven 就会自动从中央仓库进行下载,并同时下载这个 jar 包所依赖的其他 jar 包。项目中的jar包一般都不是独立的,会有互相依赖的情况,我们凭肉眼自己无法去判断某个jar包究竟依赖了哪些包,哪怕少一个jar包你的代码也跑不起来。而Maven 就可以替我们自动的将当前 jar 包所依赖的其他所有 jar 包全部导入进来,程序员不用去了解某个jar到底还是否依赖其他jar包。是直接依赖,路径最短,那么。的依赖坐标,那么导入的就是。原创 2023-08-15 21:40:20 · 576 阅读 · 0 评论 -
JAVA基础(二)------ Java注释
Java的注释共有3种,按需选择即可:单行注释: // xxx 多行注释: /* ...*/ 文档注释: /** ....*/有个需要注意的地方,书写格式方面,推荐单行注释的时候“//”与后面的注释内容之间,有且只有一个空格。...原创 2019-09-19 15:44:48 · 146 阅读 · 0 评论 -
JAVA基础(六)------ x++、x--、和 ++x、--x的区别
一句话:x++先动作再加1,++x先加1再动作。一下代码便于理解:int x = 10;int y = 20;++ x;nt z = x - y;y --;System.out.println("x = " + x);System.out.println("y = " + y);System.out.println("z = " + z);结果:x = 11y ...原创 2019-09-19 17:25:14 · 5420 阅读 · 0 评论 -
JAVA基础(五)------ 运算符(优先级、三目运算符、位运算符、=和==)
1、运算优先级单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。(其中 1 级最高,14 级最低)使用优先级为 1 的小括号可以改变其他运算符的优先级2、三目运算实际开发中注意两点就可以了:(1)三目运算符属于逻辑运算符,可以替代简单的if语句,使...原创 2019-09-19 17:16:11 · 5405 阅读 · 0 评论 -
JAVA基础(四)------ Java的数据类型(数据分类、数据范围、数据类型选择、数据溢出、类型互转、进制转换)
1、Java数据分类总的来讲,java这个语言里只有两种数据类型:基本数据类型、引用数据类型。具体的用图表达会更清晰:注意一点,只有引用数据类型才会有NPE问题。2、数据范围int和byte需要记住,其余可以不用记(有人说都该记下来,这个不抬杠,你要是有精力都背下来当然是好的,但一个东西要是你花了很大功夫只是暂时能记住,一段时间不碰又忘了,那这个东西往往是不用背的...原创 2019-09-19 17:08:57 · 305 阅读 · 0 评论 -
JAVA基础(三)------ 标识符与关键字
1、标识符在实际的开发中,标识符的命名有个推荐的总的原则:字母开头,下划线和数字为辅,$可以使用但不建议命名时有这个$符号,不能使用关键字(若按照很多教材里的要求,只要不以数字开头,以 _ 和 $开头也是可以的,实际开发中推荐都是以字母开头)举写正确命名的例子:age、$salary、_value、__1_value以上$salary、_value、__1_value虽是...原创 2019-09-19 15:58:38 · 125 阅读 · 0 评论 -
JAVA基础(一)------ Java简介(版本、可移植、JRE、JDK、编译过程、PATH和CLASSPATH的区别)
要说java相关的背景,那有一大堆,哪个公司开发的、什么时候开发的、谁开发的、为什么叫java,jdk1.0啥时候发布的..........说起这些背景知识,知道当然好,没事和圈子里的朋友哈哈牛皮挺不错的,这个专栏就不介绍了,咱捞干的来整理,嘿嘿!1、JavaEE、JavaSE和JavaMejava按照功能用途区分,可分为3个版本:1.Java SE(Java Platf...原创 2019-09-19 15:38:19 · 327 阅读 · 0 评论 -
JAVA集合类(代码手写实现,全面梳理)
目录一、集合类关系图二、Iterator三、ListIterator四、Collection五、List(1)ArrayList(2)LinkedList(3)Vector六、Map(1)HashMap(2)LinkedHashMap(3)HashTable(4)TreeMap七、Set(1)HashSet(2)LinkedH...原创 2019-12-26 20:14:34 · 2748 阅读 · 2 评论 -
内部类是啥
一、内部类定义一个类可以包含属性、方法,实际上java的类也允许类嵌套,即类中也可以包含类,被包含的类就叫内部类。代码形式如下:classOuter{privateStringname="我是私有属性";publicvoidinfo(){Innerinner=newInner();inner.print();...原创 2019-11-11 11:14:09 · 211 阅读 · 0 评论 -
接口(接口与抽象类的区别)
一、接口定义接口可以理解为更彻底的抽象类,接口中的组成以抽象方法和全局常量为主(JDK1.8后也可以包含普通方法和静态方法)。定义如下:interface ITest { public static final String MSG = "1111"; public abstract String getMsg();}public class Demo {...原创 2019-10-17 20:48:45 · 317 阅读 · 1 评论 -
多线程编程
Java是支持多线程的编程语言,多线程是相对于单线程(单进程)而言的,传统的DOS系统是单进程的,同一时间段只允许一个进程执行,当出现病毒那么将导致整个系统瘫痪。多线程则允许同一个时间段多个程序轮流运行,轮流抢占CPU资源。一、进程与线程线程是在进程的基础上划分的更小的程序单元,线程是在进程的基础上创建并使用的,所以线程依赖进程的支持,但是线程的启动速度要比进程快许多,当时用多线程进...原创 2025-01-07 20:59:13 · 563 阅读 · 0 评论 -
Java常用类库
一、StringBuffer类String类很强大,但是其内容不允许修改,而StringBuffer类的出现可以实现字符串内容的修改处理。StringBuffer包含以下主要的方法:构造方法:StringBuffer()构造方法:StringBuffer(Strings)追加:append(类型变量)插入数据:insert(intoffset,类型变量)删除指定范围数据:...原创 2019-12-04 15:10:31 · 271 阅读 · 1 评论 -
JAVA面向对象自测题
ADCCACADCCABAAC因为类定义成protected就只有自己和自己的子类可以访问,这违背了非内部类的原则,使得类无法被外部调用失去意义CACCACCD...原创 2019-11-11 14:06:50 · 201 阅读 · 0 评论 -
Lambda表达式及双冒号操作符
一、Lambda表达式基本语法(parameters) -> expression或(parameters) ->{ statements; }// 不需要参数,返回值为6() -> 5// 参数x,返回值为6*x(x) -> 6*x// 参数x和y,返回值为x*y(x, y) -> x*y// 参数s, 打印输出(String s) ...原创 2019-12-03 19:52:47 · 1475 阅读 · 0 评论 -
异常(实际项目中的异常处理)
一、什么是异常异常指的是导致程序中断执行的一种指令流。若程序中有一处错,程序在中途运行停止,如下:publicclassTest{publicstaticvoidmain(String[]args){System.out.println("1111111111");System.out.println("222222...原创 2019-11-11 10:33:50 · 572 阅读 · 0 评论 -
泛型有啥用?
一、为什么需要泛型?泛型是JDK1.5后增加的属性,主要的目的是解决ClassCastException的问题。我们知道Object可以接收任意类型的数据,例如整型、浮点型、字符串都可以用Object来接收,因为存在以下的装换关系:基本数据类型--------->转换为包装类--------->自动向上转型为Object以上是向上转型,没有任何问题,但是当向下转型时就会出...原创 2019-10-24 07:58:14 · 1480 阅读 · 0 评论 -
枚举(values()方法、枚举与switch、Enum类、enum和Enum的区别)
一、枚举的定义 枚举也是在JDK1.5之后提出的概念,可以认为是多例设计的一种,只是相较来说更简单,也是因为有了枚举多例模式就受到了冷落,一般很少使用了。枚举也是一种定义有限个对象的结构。 创建枚举要使用enum关键字,隐含了所创建的类都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类),如下:enum Colors ...原创 2019-10-28 23:19:42 · 957 阅读 · 0 评论 -
Java中的IO编程实例
一、字节流和字符流有什么区别?输入流和输出流有什么区别?节点流和处理流的区别?1、字符流和字节流是按照处理流的数据单位进行的划分2、OutputStream、InputStream、Writer、Reader四个都是抽象类。3、字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。4、InputStreamReader,OutputStreamWriter(转换流)来关联,实际上是通过byte[]和String来关联的。.原创 2020-07-23 23:36:21 · 823 阅读 · 1 评论 -
java中的网络编程实例
TCP的全称?UDP的全称?TCP(Transfer Control Protocol)TCP:一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议。特点:面向连接;点到点的通信;高可靠性;占用系统资源多、效率低。UDP(User Datagram Protocol)特点:非面向连接;传输不可靠,可能丢失;发送不管对方是否准备好,接收方收到也不确认;可以广播发送;非常简单的协议,开销小如何理解Socket的含义所谓socket通常也称作"套原创 2020-07-23 21:57:41 · 535 阅读 · 1 评论 -
String类你了解多少?
String类型不属于基本数据类型之一,它实际上是对数组的特殊包装,是一个匿名对象。1、String类的两种实例化方式及区别第一种: 直接赋值String str1 = "haha";String str2 = "haha";System.out.println(str1 == str2); //true以上结果是true,也就是虽然定义了两个字符串对象,但实际...原创 2019-09-29 19:05:39 · 498 阅读 · 0 评论 -
JAVA基础(九)------ 方法重载、值传递、引用传递、形参、实参、可变参数
方法重载只需要把握住下面几个重点:(1)在同一个类中,方法名称相同,参数类型或个数不同的方法就是重载方法;public static int sum(int x, int y){ return x + y;}public static int sum(int x, int y, int z){ return x + y + z;}public static dou...原创 2019-09-19 18:34:24 · 282 阅读 · 0 评论 -
static关键字 及 static、final、static final的区别?
(1)static关键字:(修饰公共属性和方法),本身是一个公共属性,不需要先实例化对象才能使用,当然也可以通过对象来调用,但是最好的做法是直接使用类名调用。 (2)定义static类型的属性虽然很方便使用,但真正设计类时,首选非static属性,只有考虑共公信息存储时才定义使用static类型属性。 (3)static方法只允许调用static属性或方法,不能调用非static属性或方法。...原创 2019-09-29 16:45:01 · 235 阅读 · 0 评论 -
JAVA类和对象
我看的书或者视频在介绍什么是类什么是对象的时候,都是长篇大论,写得好的生动形象,能理解但是耗时;写得差的能把人绕晕。毕竟是快速学习时代,长篇大论确实让人头疼。一直都觉得真正厉害的人就是能把复杂的问题三两句就能给你点透,那些能一句话说明白的非要弄上一整篇,云里雾里的,能大白话说明白的非要各种术语高深概念把人搞晕的人,我是真的看不上,为了装逼,浪费别人精力时间不是(当然是说那些故意装逼的,...原创 2019-09-20 11:33:13 · 175 阅读 · 0 评论 -
JAVA抽象类、抽象方法
类的继承的作用主要在于可以扩充已有类的功能,子类继承后可以任意选择是否实现父类的方法,想实现就实现,不想实现就不实现。换句话说,父类无法对子类是否实现自己的某个方法做强制的约定。要想强制子类必须实现父类的某个方法,在设计时就需要考虑抽象类。一、抽象类的定义抽象类主要是对子类中覆写方法进行约定,在抽象类中可以定义一些抽象方法来实现这些约定。抽象方法是指abstract关键字定义且无方法体的方...原创 2019-10-17 19:32:51 · 271 阅读 · 1 评论 -
JAVA基础(八)------ while、do..while和for
while、do..while和for都是构建循环体的关键字,构建循环体时按需选择就行,原则是:(1)明确循环次数时选择for;(2)次数不清晰但结束条件清楚时使用while;(3)while和do..while的区别是:do..while无论条件是否满足,都先执行一遍循环体,do..while实际开发中应用的较少。...原创 2019-09-19 18:19:17 · 215 阅读 · 0 评论 -
阿里大学---Java语言基础测试题
1.class Happy{ public static void main(String args[]){ int i = 1; int j = i++; if ((i==(++j))&&((i++)==j)){ i += j; } System.out.println("...原创 2019-09-20 08:40:37 · 1480 阅读 · 0 评论 -
面向对象的三个特征和三个步骤
1、面向对象(OOP) 面向对象是相较于面向过程而言的,面向对象一直都是一个很抽象的概念,也是面试官钟爱且常问的问题,理解抽象的东西最好的办法就是利用比喻,找个现实世界的例子去匹配这个概念,就会使得抽象的东西容易理解。 记得一个大牛用过一个比喻:什么是面向对象?假如你想要一个房子住,面向对象就是你去开发商那直接买一个商品,面向过程就是你自己找工...原创 2019-09-20 10:47:42 · 1867 阅读 · 0 评论 -
Java内存分析图解(内存分类、结合代码的内存分析、内存泄露)
(一)JVM的内存分类首先JVM的内存分为栈内存、堆内存及方法区:栈内存:连续的存储空间,遵循后进先出的原则 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象) 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)堆内存:不连续的空间,用于存放new出的...原创 2019-09-23 12:07:51 · 969 阅读 · 1 评论 -
数组(静态初始化、动态初始化、数组内存分析、数组对象)
1、数组静态初始化静态初始化就是在数组定义时就为其设置好内容,例如:数据类型 数组名称[] = {数据1,数据2,...};或数据类型 数组名称[] = new 数据类型 [] {数据1,数据2,...};前一种是简写格式,后一种是完成格式,要注意的是数组里面每一个元素的数据类型必须一致。2、数组动态初始化数据类型 [] 数组名称 = new 数据类型...原创 2019-09-29 17:42:15 · 563 阅读 · 0 评论 -
JAVA基础(十)------ 递归
递归就是自己调自己,递归方法必须写明结束条件。下面先以普通的循环结构写一段代码,如下:public class WeTest { public static void main(String[] args) { int sum = 0; int x = 1; while ( x<=200 ){ sum += x...原创 2019-09-19 18:47:37 · 163 阅读 · 0 评论 -
HashMap不能排序的问题
最近写个接口给前端,前端说你这个map返回的数据都有了但是顺序是乱的,如下:以上是想按照日期升序排列的,保存时明明是按照日期顺序封装的,但得到的是乱序的,查看代码发现我定义的orderDayMap是一个HashMap,HashMap不支持排序。要想实现排序其实很简单,只需要把map定义成LinkedHashMap即可,以上代码改为:Map<String, Map>...原创 2019-09-24 11:28:18 · 1177 阅读 · 0 评论 -
this关键字
this这个字可以说是学java里面的一个难点了,刚开始的时候确实有些晕,之所以会这样是因为this的使用形式很灵活,不同的情景中代表的含义不一样,但甭管怎样,秉持“不服就干”的态度,盘它!1、this是个交际花this这个关键字和类的属性,方法及对象都有关系,this有以下三种调用结构描述:当前类中的属性:this.属性 当前类中的方法(普通方法、构造方法):this....原创 2019-09-21 17:41:48 · 287 阅读 · 0 评论 -
JAVA包装类、自动装箱、拆箱
一、为什么需要包装类包装类的主要功能是针对基本数据类型的对象转换而实现的。若想把基本数据类型以类或者对象的形式进行处理,就需要转换成包装类。二、有哪些包装类基本数据类型有八种,对应的包装类也有八种,对应关系如下:概括的说,包装类分为两种:对象型包装类(Object直接子类):Boolean、Character 数值型包装类(Number直接子类):Integer、Byte...原创 2019-10-17 20:17:41 · 238 阅读 · 1 评论 -
JAVA构造方法
1、什么是构造方法?方法名与类名相同、用于实例化对象时初始化该对象属性的无返回值的方法。如下为一个有参构造方法:class Ball{ private String name; private double size; //方法名与类名相同,且无返回值,连void型也没事有 public Ball(String str, double n){ ...原创 2019-09-21 16:29:44 · 215 阅读 · 0 评论 -
JAVA基础(七)------ switch语句
抓住几个重点:(1)switch语句又叫开关语句,具有开关控制的效果;(2)switch(XXX)这个XXX只能是int、char、枚举和String(jdk1.7后增加的);(3)每个case语句后要加break;,不然会从匹配的case处开始继续执行下一个case;(4)最后要加上default代码块,当无匹配的case时,执行该default语句块。以String类...原创 2019-09-19 18:06:55 · 219 阅读 · 0 评论 -
虚拟线程详解
虚拟线程又叫协程。JDK19 中引入了虚拟线程,这是一个重大的更新项,虚拟线程在Project Loom项目中已经孵化很久了。据官方阐述,引入的原因是。允许通过 java.lang.ThreadAPI 的现有代码来使用虚拟线程,并且只做最小的更改。(当然虚拟线程不是Java语言独有的,更不是Java发明的,只是JDK19时才引入,比如Go语言的goroutines和Erlang语言早就支持虚拟线程了)各种语言争相引入虚拟线程的原因就是它能以简单的方式来提高系统并发性能。那么虚拟线程是怎么做到的?原创 2023-04-09 21:27:28 · 1678 阅读 · 1 评论