
JAVA
文章平均质量分 66
java源码深耕
不做挖坑人
一事无成到事事都成,戒矫戒躁,厚积薄发。不愿做菜鸟,那只能笨鸟先飞。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
String底层解析
String解析原创 2021-12-18 19:07:46 · 1940 阅读 · 0 评论 -
类变量和实例变量的区别是什么?
类变量也叫静态变量,也就是在变量前加了static 的变量;实例变量也叫对象变量,即没加static 的变量;区别在于: 类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;调用类变量可以用对象和类名调用;实例变量只能用对象调用;存储类变量存储与方法区的常量...原创 2021-12-17 16:34:14 · 384 阅读 · 0 评论 -
面向对象思想的六大设计原则
在实际的开发中,我们要想更深入的了解面向随想思想,就必须熟悉前人总结过的面向对象的思想的设计原则:单一职责原则其实就是开发人员经常说的“高内聚,低耦合”,也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则.既功能细化开闭原则 核心思想是:一个对象对扩展开放,对修改关闭。 其实开闭原则的意思就是...原创 2019-10-13 10:28:38 · 220 阅读 · 0 评论 -
JDK8-方法引用
我们用Lambda表达式来实现匿名方法。但有些情况下,我们用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作,在这种情况下,我们倾向于通过方法名来调用它,而Lambda表达式可以帮助我们实现这一要求,它使得Lambda在调用那些已经拥有方法名的方法的代码更简洁、更容易理解。方法引用可以理解为Lambda表达式的另外一种表现形式。方法引用可以使语言的构造更紧凑简洁,减少冗余代码。方法引用通过方法的名字来指向一个方法。 方法引用使用...原创 2021-07-19 23:36:11 · 214 阅读 · 0 评论 -
Optional类(JDK8)
java8引入新类Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException)本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此 主要方法介绍:构造方法:private Optional();//返回一个含null的Optional实例private Optional(T ...转载 2020-05-17 12:39:10 · 407 阅读 · 0 评论 -
函数式接口和接口default默认方法(JDK8)
函数式接口当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。如下:@FunctionalInterfacepublic interface Runnable { public abstract void run();}@FunctionalInterfa...原创 2019-11-29 18:51:36 · 1353 阅读 · 0 评论 -
JDK8 - Lambda表达式
我的理解匿名实现类的简写,也可以称为闭包例:类型 变量 = (参数类型 param1, 参数类型 param2 ...)->{实现};Lambda表达式只能引用标记了final的外层局部变量,这就是说不能在lambda内部修改定义在域外的局部变量,否则会编译错误。可以直接在 lambda 表达式中访问外层的局部变量,lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)原创 2021-07-13 13:34:29 · 845 阅读 · 0 评论 -
类和对象及封装的理解
1.类类是一组相关的属性和行为的集合。是一个抽象的概念。对象是该类事物的具体表现形式。具体存在的个体。2.封装封装概述:是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。或者说指隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。封装好处:·隐藏实现细节,提供公共的访问方式·提高了代码的复用性·提高安全性...原创 2020-12-29 22:16:32 · 1289 阅读 · 1 评论 -
面向对象程序设计(OOP)的理解
面向对象主要是把事物对象化,包括其属性和行为(比如类的属性和方法),降低代码耦合,提高复用性。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。再比如汽车发动机的就是一个对象。我们不需要知道发动机怎么工作的,我们只需要知道加油,它就会输出动力。汽车轮子等其他都是一个对象,这些对象拼起来就是一个汽车。面向过程和面向对象对比面向过程(步骤化)就是分析出实现需求所需要的步骤通过函数一步一步实现这些步骤,接着依次...原创 2020-12-29 22:13:58 · 1512 阅读 · 0 评论 -
http请求与响应
一、Http协议1.什么是Http协议HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收HTML页面的方法2.Http协议的组成Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览原创 2020-06-12 21:49:52 · 396 阅读 · 0 评论 -
java异常
异常类结构原创 2020-06-08 22:54:49 · 211 阅读 · 0 评论 -
动态代理解析
目录静态代理动态代理分类1.jdk动态代理2.cglib动态代理继承基于接口代理(jdk动态代理)基于继承代理(cglib动态代理)增强类的三种方法了解动态代理首先得了解静态代理静态代理静态代理是指客户端无法直接访问目标类,通过访问代理类,由代理类帮忙访问目标类比如:租客无法直接找到房东,由中介帮忙找房东,最后租客获得房东的信息1.接口类,规定目标类和...原创 2019-11-04 22:27:57 · 299 阅读 · 0 评论 -
int和Integer的坑
int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时(注意是new),实际上是生成一个指针指向此对象;而int则是直接存储数据值 ,非new的Integer会指向方法区的常量池里的数据,当不在-127-127这个范...原创 2019-11-04 14:38:38 · 775 阅读 · 0 评论 -
接口与抽象类
接口 interface产生了一个完全抽象的类,没有任何方法实现,只允许有方法名,参数列表和返回类型接口成员特点:成员变量(域):是常量,并且是静态的并公共的,默认的修饰符为public static final ,可以用 接口名调用构造方法:没有构造方法,既不能被实例化成员方法:只能是抽象的,默认 public abstract 没有主体PS:接口中的域不能是“空f...原创 2019-10-31 00:39:58 · 118 阅读 · 0 评论 -
静态嵌套类(Static Nested Class)和内部类(Inner Class)的区别
可以在一个类的内部定义另一个类, 这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类使用很少, 最重要的是非静态嵌套类, 也即是被称作为内部类(inner).嵌套类从JDK1.1开始引入.其中inner类又可分为三种:(1) 在一个类(外部类)中直接定义的内部类;(2) 在一个方法(外部类的方法)中定义的内部类;(3) 匿名内部类....原创 2019-10-14 13:19:18 · 1656 阅读 · 0 评论 -
HashMap和CurrentHashMap及HashTable的区别
HashMap原理请看https://blog.youkuaiyun.com/qq_17021569/article/details/102519163HashMapCurrentHashMap和HashMap的主要区别在数组那里(1)ConcurrentHashMap对整个桶数组进行了分段,HashMap没有(2)ConcurrentHashMap在每一个分段上都用锁进行保护,从而让锁的粒度...原创 2019-10-14 13:18:43 · 6601 阅读 · 2 评论 -
hash表及HashCode方法解析
1、hashhash是一个函数,通过一系列的算法来得到一个hash值,hash表中的地址值。hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值,如上面截图的三种。hash函数就是根据key计算出应该存储地址的位置,而哈希表是基于哈希函数建立的一种查找表。2、hash表也叫散列表,一种散列存储结构,通过hashcode直接确定对象在has...原创 2019-10-13 10:30:00 · 402 阅读 · 0 评论 -
Treeset和hashset的区别
HashSet 哈希算法,散列存储结构TreeSet 二叉树算法(1)HashSet有以下特点不能保证元素的排列顺序,顺序有可能发生变化 集合元素可以是null,但只能放入一个null 线程不安全 可以放不同的对象 不能重复当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hash...原创 2019-10-13 10:29:47 · 304 阅读 · 1 评论 -
什么是多态
什么是多态?同一个对象在不同时刻表现出来的不同的状态多态的条件:要有继承关系 要有方法重写 要有父类引用指向子类对象好处:提高了代码的维护性(集成保证) 提高了代码的扩展性多态的特点使用父类类型的引用指向子类的对象; 该引用只能调用父类中定义的方法和变量; 如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调...原创 2019-10-13 10:28:07 · 164 阅读 · 0 评论 -
HashMap的实现原理
一、Java中的hashCode和equals1、关于hashCode1.hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的2.如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同3.如果对象的equals方法被重写,那么对...原创 2019-10-12 13:54:01 · 855 阅读 · 0 评论 -
属性文件操作之Properties与ResourceBundle
java.util.ResourceBundlejava.util.Properties1.Properties与ResourceBundle两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单。2.PropertiesProperties extends Hashtable<K,V> extend...转载 2019-10-12 13:32:19 · 95 阅读 · 0 评论