java se
weixin_43115433
这个作者很懒,什么都没留下…
展开
-
重载和重写的区别
java中重载属于静态绑定,重写属于动态分配。Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不 同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方 法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。重写(override)又名覆盖: 1.不能存在同一个类中,在继承或实现关系的类中; 2. 名相同,参数列表相同,方法返回...原创 2019-06-20 20:11:13 · 64 阅读 · 0 评论 -
hashmap保存自定义类是需要重写自定义类的哪些方法
需要重写hashcode和equals方法hashmap中put添加数据时,首先判断hashcode是否相等,再判断key是否equals.由于hashcode码默认的是内存地址,equals默认的是判断两个对象是不是同一个实例,都不符合我们需要key在数组链表位置和逻辑上的相等,所以我们需要重写hashcode和equals方法。...原创 2019-06-30 10:05:36 · 629 阅读 · 0 评论 -
CopyOnWriteArrayList
当迭代次数远大于修改次数,使用该容器。每次修改都会复制底层的数组,他是Arraylist的一个线程安全变体,所有可变操作都通过对底层数组进行一次新的复制来实现,该过程一般都加锁。而这需要很大的开销,但当遍历操作的数量大大超过可变操作,这种方法就显得更加高效。...原创 2019-06-30 09:45:39 · 65 阅读 · 0 评论 -
简述java内部类
首先我们考虑为什么使用内部类:使用内部类最吸引人的原因是:内部类最大的有点在于它能非常好的解决多继承的问题,使用内部类还能够带给我其他特性(1)提供更好的封装性,除了外围类其他类都不能访问。(2)内部类:成员内部类,静态内部类,局部内部类,匿名内部类成员内部类: 他的主要作用就是访问外部类数据inner类定义在outer类内部,相当于outer类的一个成员变量的位置,inner类可以...原创 2019-07-04 20:05:14 · 89 阅读 · 0 评论 -
arraylist和linkedlist的区别
1.ArrayList 的底层是数组,它可以以 O(1)时间复杂度对元素进行 随机访问 与此对应,LinkedList 是以元素列表的形式存储它的数据,查找某个元素的时间复杂度是 O(n)。2.相对于 ArrayList,LinkedList 的插入,删除操作速度更快,因为当元素被添加到集合 任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。3.对ArrayList和LinkedLi...原创 2019-06-28 20:40:08 · 79 阅读 · 0 评论 -
哪些是线程安全的容器?Hashmap和Hashtable的区别
Vector,HashTable,concurrentHashMap,copyonwriteArrayList是线程安全的。不同:第一,继承不同。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。第二,Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hash...原创 2019-06-28 20:15:13 · 366 阅读 · 0 评论 -
Hashmap是线程安全的吗?为什么
不是线程安全。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用Collections.synchronizedMap方法来“包装”该映射。最好在创建时完成这一操作,以防止对映射进行意外的非同步访问。在hashmap做put操作的时候会调用到以上的方法。现在假如A线程...原创 2019-06-28 20:09:19 · 5244 阅读 · 0 评论 -
hashmap的初始容量为什么选择16
首先,lengt为2的整数次幂的话,h&(length-1)相当于对length取模,既保证了散列均匀,又提升了效率。其次,length为2的整数次幂,保证了length-1最后一位是1,在与操作后可能出现两种结果。反之,最有一位只有可能为0。所以,这样能是hash值发生碰撞的概率较小,也能尽可能保证散列均匀。...原创 2019-06-28 19:36:36 · 846 阅读 · 0 评论 -
jdk7和jdk8hashmap的区别
jdk7中hashmap解决冲突采用链表,一旦hash碰撞过多时,可能会使得一个链表上存在多个节点,查找时花费0(n)jdk8解决了这个问题,在链表超过8个时采用红黑树的结构,提高了链表的查找速度为log(n)....原创 2019-06-28 19:04:29 · 610 阅读 · 0 评论 -
concurrentHashmap的实现,如何实现线程安全的
concurrentHashMap最主要特点是采用了分段锁技术,并发效果要比hashtable好一点。它的底层是一个segment数组,每个segment又链接了一个同hashmap类似的数据结构(1.7和1.8同样采用了不同的结构),由于segment继承了ReentrantLock,所以每个segment都可以加锁。它与hashmap的一些差异1.entry有一定的差异性,HashEntr...原创 2019-06-28 18:58:36 · 202 阅读 · 0 评论 -
请说出java中散列表,树所对应的容器。hashmap如何解决冲突
hashmap,hashtable,concurrentHashmap,hashset,treemap,treesethash冲突:就是根据key即经过一个函数f(key)得到的结果的作为地址去存放当前的key value键值对(这个是hashmap的存值方式),但是却发现算出来的地址上已经有人先来了。就是说这个地方被抢了啦。这就是所谓的hash冲突啦。1.开放定址法2.链地址法3.再哈希...原创 2019-06-28 18:31:40 · 239 阅读 · 0 评论 -
hashmap,linkedhashmap,treemap的区别
hashmap底层是(数组+链表+红黑树),访问速度快但遍历顺序不定linkedhashmap继承自hashmap但是底层维护了一个双向链表,所以可以原创 2019-06-28 10:57:43 · 119 阅读 · 0 评论 -
java中的异常结构
Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 其中异常类Exception又分为运行时异常(RuntimeException),非运行时异常。运行时异常都是RUntimeexception及其子类如NullPointerException、IndexOutOfBoundsException等,又叫不检查异常,程序可以捕获处理也可以...原创 2019-07-02 15:17:59 · 115 阅读 · 0 评论 -
char可以存储汉字吗
char是按照字符存储的,不管英文还是中文,固定占用占用2个字节,用来储存Unicode字符。unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有 被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。...原创 2019-07-02 14:37:26 · 736 阅读 · 0 评论 -
Object的方法有那些
wait,notify,notifyall,clone,hashcode,equals,tostring,finalize原创 2019-07-01 20:51:43 · 158 阅读 · 0 评论 -
java中的泛型擦除
java的泛型只存在源码中,在编译后的字节码被替换中原生类型,在泛型类被类型擦除的时候,如果类型参数部分没有指定界限,如 会被转译成普通的 Object 类型,如果指定了上限,则类型参数被替换成类型界限。ArrayList 与 ArrayList 编译后都被擦除了,变成了原生类型 ArrayList。泛型使用的注意事项:https://blog.csdn.net/zly921112/artic...原创 2019-07-01 20:49:45 · 59 阅读 · 0 评论 -
动态绑定和静态绑定
绑定、静态绑定、动态绑定的概念 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。 静态绑定:在程序执行前方法已经被绑定,针对java简单的可以理解为程序编译期的绑定;java当中的方法只有final,static,private和构造方法是前期绑定 动态绑定在运行时根据具体对象的类型进...原创 2019-06-20 21:38:51 · 118 阅读 · 0 评论 -
抽象类和接口的区别以及相关问题
抽象类:含有抽象方法的类称为抽象类,并且必须被关键字abstract修饰。其中抽象方法只有声明并无具体实现。抽象类虽然含有构造函数但是不能被实例化,因为抽象类的抽象方法并无具体的实现。普通类要继承抽象类要去实现他的抽象方法,而抽象类可以不去实现他的抽象方法。抽象类和普通类的区别1.抽象方法为Public,protect,不能为private2.不能实例化3.继承必须实现抽象方法接口:首...原创 2019-06-16 20:23:34 · 81 阅读 · 0 评论 -
静态分派和动态分派
静态分派:所有依赖静态类型来定位方法执行版本的分派成为静态分派,发生在编译时期,典型**应用为方法重载。静态分派发生在编译阶段,因此确定静态分派的动作实际上不是由虚拟机来执行的。动态分派:典型应用为重写,是一种动态的概念。向上转型后调用子类覆写的方法便是一个很好地说明动态分派的例子。就是说,我们在判断执行的方法是父类中的方法还是子类中覆盖的方法时;如果用静态类型来判断,那么无论怎么进行向上转型...原创 2019-07-01 10:14:13 · 95 阅读 · 0 评论