Java基础
黄机智!
这个作者很懒,什么都没留下…
展开
-
HashTable、LinkedHashMap 、Properties、TreeMap
一、HashTable数据+链表put方法:1.Hasbtable并不允许值和键为空(null),若为空,会抛空指针。2.HashMap计算索引的方式是h&(length-1),而Hashtable用的是模运算,效率上是低于HashMap的。3.特别需要注意的是这个方法包括下面要讲的若干方法都加了synchronized关键字,也就意味着这个Hashtable是个线程安全的类,这...原创 2020-02-27 16:31:54 · 368 阅读 · 0 评论 -
HashMap?
HashMap数据结构是什么?JDK1.7 HashMap由数组+链表组成的,JDK1.8 HashMap由数组+链表+红黑树组成的数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存...原创 2020-02-27 16:12:57 · 404 阅读 · 0 评论 -
关键字篇
finalfinallyfinalizestaticthissuperinstanceof原创 2020-02-26 17:40:38 · 193 阅读 · 0 评论 -
容器篇以及底层实现原理
1、说一说Set中的TreeSet 、HashSet 、LinkedHashSet2、说一说List中的ArrayList 、Vector、LinkedList3、说一说Map中的TreeMap、HashMap、HashTable、LinkedHashMap、Properties4、说一说List、Map、Set的区别?5、Arraylist 与 LinkedList 区别?6、Arra...原创 2020-02-26 17:35:29 · 579 阅读 · 0 评论 -
Map之HashMap
HashMap底层实现了哈希表,非常重要的数据结构。哈希表的基本结构是 数组+链表取数据过程:1、获得key的hashcode,通过hash()散列算法得到hash值,进而定位到数组的位置。2、在链表上挨个比较key对象,调用equals()方法,将key对象和链表上所有节点的key对象进行比较,直到碰到返回true的节点对象为止。3、返回equals()为true的节点对象的valu...原创 2019-10-17 22:07:59 · 123 阅读 · 0 评论 -
容器之Vector
Vector多线程共享:使用Vector方法内部一般不涉及的问题一般用ArrayListVector底层时用数组实现的List,相关方法都增加了同步检查,线程安全,效率低 (只是增加了synchronized)同步标记。 public synchronized void trimToSize() { modCount++; int oldCapa...原创 2019-10-11 22:16:37 · 90 阅读 · 0 评论 -
容器之LinkedList
LinkedListnode每一个都有node手写linkedList:package cn.ccut.homework;public class MylinkedList { private Node first; private Node last; private int size; //[a,b,c] public void add(Object obj)...原创 2019-10-11 22:04:12 · 82 阅读 · 0 评论 -
容器之ArrayList
容器架构介绍:Set没有顺序不可重复List有顺序可以重复泛型是1.5之后新增的,它可以帮助我们建立安全的集合 一般使用package cn.ccut.homework;//测试泛型public class Test{ public static void main(String[] args) { Mycollection<String> m =new Myc...原创 2019-10-11 09:57:56 · 97 阅读 · 0 评论 -
static关键字_final关键字
static关键字:用static修饰的变量叫做静态变量,用static修饰的方法叫做静态方法。1、 在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。2、static修饰的成员变量和方法,从属于类。普通变量或者方法从属于对象的。package cn.ccut.homework;public class st...原创 2019-10-09 19:53:45 · 122 阅读 · 0 评论 -
this关键字的本质
对象的创建过程和this的本质:创建一个对象分为如下四步:1、分配对象空间,并将对象成员变量初始化为0或空2、执行属性值的显式初始化3、执行构造方法4、返回对象的地址相关的变量this的本质就是“创建好的对象的地址”!由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”package cn.ccut.homework;public clas...原创 2019-10-09 19:34:53 · 282 阅读 · 0 评论 -
java垃圾回收机制
垃圾回收机制:C++和Java的区别:垃圾回收过程:1、发现无用对象2、回收无用对象占用的内存空间垃圾回收相关算法:1、引用计数法堆中的每个对象都有一个引用计数,被引用一次,计数+1,被引用变量值变为null,则计数-1,直到计数为0,变成无用对象优点:算法简单缺点:循环引用的无用对象无法识别如下package cn.ccut.homework;//循环引用...原创 2019-10-09 19:07:07 · 250 阅读 · 1 评论 -
构造方法详解
构造器也叫做构造方法,用于对象的初始化。1、通过new关键字调用2、构造器虽然有返回值,但是不能定义返回值类型(返回值类型肯定是本类),不能在构造器里使用return返回某个值。3、如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加4、构造器的方法名必须和类名一致package cn.ccut.homework;public class ...原创 2019-10-09 18:47:23 · 313 阅读 · 0 评论 -
Java内存分析详解栈_堆_方法区_栈帧_程序执行内存变化的过程
Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area(方法区其实在堆中)栈的特点如下:1、栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)3、栈属于线程私有,不能实现线程间的共享!4、栈的存储特性是”先进后出,后进先...原创 2019-10-09 16:01:02 · 405 阅读 · 3 评论 -
方法重写
方法的重写:子类重写父类方法,用子类自身的行为替换父类的行为。package cn.ccut.homework;public class stu { public static void main(String[] args) { sss a = new sss(); a.run(); }}class s{ public void run(){ System.o...原创 2019-10-09 20:25:53 · 322 阅读 · 0 评论