1.equals和==的对比
==用于比较引用和比较基本数据类型时具有不同的功能:
A:比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true;

equals()作为方法,实现对象的比较。由于==运算符不允许我们进行覆盖,也就是说它限制了我们的表达。
因此我们复写equals()方法,达到比较对象内容是否相同的目的。而这些通过==运算符是做不到的。

String s1=new String("abc");
String s2=new String("abc");
String s3=new String(s1);
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1.equals(s2));
运行结果为:false、false、true

2.HashMap的数据结构和HashMap的存取实现
1):首先HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next,
从属性key,value我们就能很明显的看出来Entry就是HashMap键值对实现的一个基础bean,
我们上面说到HashMap的基础就是一个线性数组,这个数组就是Entry[],Map里面的内容都
保存在Entry[]里面。

//存储时:
int hash = key.hashCode();// 这个hashCode方法这里不详述,只要理解每个key的hash是一个固定的int值
int index = hash % Entry[].length;
Entry[index] = value;

//取值时:
int hash = key.hashCode();
int index = hash % Entry[].length;
return Entry[index];

这里HashMap里面用到链式数据结构的一个概念。上面我们提到过Entry类里面有一个next属性,
作用是指向下一个Entry。打个比方, 第一个键值对A进来,通过计算其key的hash得到的index=0,
记做:Entry[0] = A。一会后又进来一个键值对B,通过计算其index也等于0,现在怎么办?
HashMap会这样做:B.next = A,Entry[0] = B,如果又进来C,index也等于0,那么C.next = B,
Entry[0] = C;这样我们发现index=0的地方其实存取了A,B,C三个键值对,他们通过next这个属性链接在一起。
所以疑问不用担心。也就是说数组中存储的是最后插入的元素。到这里为止,HashMap的大致实现,我们应该已经清楚了。

也就是说数组中存储的是最后插入的元素

3.HashMap与HashTable的区别:
A:两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全

B:HashMap可以使用null作为key,不过建议还是尽量避免这样使用。HashMap以null作为key时,
总是存储在table数组的第一个节点上。而Hashtable则不允许null作为key。

C:HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75。

4.线程数组HashMap为什么是线程不安全的?
HashMap底层是一个Entry数组,当产生hash冲突的时候,hashmap是采取链表的方法来解决的,在对应的数组位置寄存链表的
头结点。对链表而言,新加入的节点会从头结点加入。

在hashmap做put操纵的时候会调用到以上的方法。当初假如A线程和B线程同时对同一个数组位置调用addEntry,两个线程会同时得到当初的头结点,
然后A写入新的头结点以后,B也写入新的头结点,那B的写入操纵就会覆盖A的写入操纵造成A的写入操纵丧失

5.Sql中--delete、truncate 、Drop删除表的区别:
--delete from 表名
--1>只是删除表中某些数据,表结构还在.。

--2>Delete 可以带where子句来删除一部分数据,例如 DELETE FROM Student WHERE sAge > 20

--3>自动编号不恢复到初始值。

--truncate table 表名
--1>truncate语句不能跟where条件,无法根据条件来删除,只能全部删除数据。

--2>自动编号恢复到初始值。

--3>使用truncate删除表中所有数据要比delete效率高的多,因为truncate操作采用按最小方式来记录日志.

--4>truncate删除数据,不触发delete触发器。

--drop table 表名

--1>删除表本身,即表中数据和表结构(列、约束、视图、键)全部删除。

最新文章

  1. 如何 判断 设备 是否 连接 上 了 wifi
  2. x01.Weiqi.11: 神来之笔
  3. web cookie and session
  4. How to solve Original Tango programmer”Hardware not Found”?
  5. 关于css中的align-content属性详解
  6. Power Map 更新日志
  7. Struts学习之手动验证
  8. openwrt系统之字符设备驱动软件包加载、测试程序加载
  9. 简单几步让网站支持https,windows iis配置方式
  10. Linux 编译安装 php 扩展包 curl
  11. 2015/12/24:嵌入式C语言的位操作随笔
  12. C++11のlambd表达式
  13. 驰骋工作流引擎JFlow与activiti的对比之4种高级分支同步模式
  14. C# 8小特性
  15. (转)innodb 多版本并发控制原理详解
  16. JS-提取字符串—>>普通方法VS正则表达式
  17. Spring Boot:定制自己的starter
  18. IE调试页面总结
  19. Linux命令四
  20. SQL 序号列ROW_NUMBER,RANK,DENSE_RANK、NTILE

热门文章

  1. js+css页面横屏
  2. gitlab(五):一个开发流程实例
  3. Zookeeper 部署 配置文件
  4. 连接数据库方法---DAO,RDO,OLE,ADO
  5. grep知识及常用用法梳理
  6. 浅谈单利模式及其应用场景(Python)
  7. 1138 - Trailing Zeroes (III) 二分
  8. vscode+php+xdebug Time-out connecting to client (Waited: 200 ms)
  9. openlayers6结合geoserver实现地图矢量瓦片(附源码下载)
  10. 五分钟后,你将真正理解MySQL事务隔离级别!