Java基础
文章平均质量分 86
my_name_nb
这个作者很懒,什么都没留下…
展开
-
HashMap与ConcurrentHashMap的一些低层原理
HashMapHashMap底层数据结构JDK7:数组+链表 JDK8:数组+链表+红黑树(看过源码的同学应该知道JDK8中即使用了单向链表,也使用了双向链表,双向链表主要是为了链表操作方便,应该在插入,扩容,链表转红黑树,红黑树转链表的过程中都要操作链表)JDK8中的HashMap为什么要使用红黑树?当元素个数小于一个阈值时,链表整体的插入查询效率要高于红黑树,当元素个数大于此阈值时,链表整体的插入查询效率要低于红黑树。此阈值在HashMap中为8JDK8中的HashMa...原创 2021-04-28 16:34:28 · 179 阅读 · 0 评论 -
java split(".")无法分隔的原因
\\会转义成反斜杠,反斜杠本身就是转义符,所有就成了“\.”,在进行转义就是.,所以\\.实际上是“.”。在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字e799bee5baa631333365656566符型数组,但使用过程中还有一些小技巧。如执行:"2|33|4".split("|")出来的结果是:""2|33|4奇怪吧,...原创 2020-04-08 17:51:10 · 6571 阅读 · 0 评论 -
java开发需掌握的基本框架
GitMavenSpringSpringMvcMybatisSpringBoot@[toc] (Git)git常用命令原创 2020-02-23 18:44:24 · 447 阅读 · 0 评论 -
一个对象实例化的完整过程
一个对象实例化过程:Person p = new Person();1,JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接的父类的情况下).2,在堆内存中的开辟空间,分配地址。3,并在对象空间中,对对象中的属性进行默认初始化。4,调用对应的构造函数进行初始化。5,在构造函数中,第一行会先到调用父类中构造函数进行初始原创 2017-06-13 16:48:19 · 706 阅读 · 0 评论 -
final关键字
final关键字:1,final是一个修饰符,可以修饰类,方法,变量。2,final修饰的类不可以被继承。3,final修饰的方法不可以被覆盖。4,final修饰的变量是一个常量,只能赋值一次。为什么要用final修饰变量。其实在程序如果一个数据是固定的,那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。而且这个变量名称的值不能变化,所以加上final固定。写法原创 2017-06-13 16:51:48 · 209 阅读 · 0 评论 -
javasocket通信小例子
自己手写了一个socket的小例子,话不多说上代码/** * Socket.java * soket * 2017年10月26日 lxw * * Copyright (c) 2017, TNT All Rights Reserved.*/package soket;import java.io.BufferedReader;import ja原创 2017-10-26 16:16:26 · 327 阅读 · 0 评论 -
abstract class和interface有什么区别?
abstract class和interface有什么区别? 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如...原创 2018-02-08 15:28:12 · 279 阅读 · 0 评论 -
面向对象的特征有哪些方面
面向对象的特征有哪些方面计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。1封装:封装是保证软件部件具有优...原创 2018-02-08 15:30:29 · 185 阅读 · 0 评论 -
for循环排序
选择排序//控制循环次数for(int i=0;i<数组.length;i++){//将数组中的两两进行比较 for(int j=i+1;j<数组.length;j++){ if(数组[i]<数组[j]){ //定义临时变量 int a=数组[i]; 数组[i]=...原创 2016-07-02 22:01:43 · 3530 阅读 · 4 评论