2019Java查漏补缺(二)
查看了公众号:java之间的整理的集和文章,文章地址
总结和搜索了一下网络知识,总结了一下:
1.String 的hashcode()方法
2.switch总结:
3.如何实现克隆
1.String 的hashcode()方法
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }
- 31是一个不大不小的质数,是作为 hashCode 乘子的优选质数之一。另外一些相近的质数,比如37、41、43等等,也都是不错的选择。那么为啥偏偏选中了31呢?请看第二个原因。
- 31可以被 JVM 优化,31 * i = (i << 5) - i。
2.switch总结:
- 底层的switch只能处理4个基本类型的值。其他三种类型需要通过其他方式间接处理,即转成基本类型来处理。
- 编译器对包装类的处理是通过 拆箱。
- 对枚举类型的处理,是通过枚举常量的序号及一个数组。
- 对字符串String的处理,是通过 String 的hash值。
- 字符串常量池属于运行时常量池
- 常量池分为:静态常量池(class文件常量池),运行时常量池
3.如何实现克隆
使用序列化实现java的深拷贝
1 // deepClone()的方法实现 2 Person person = new Person("sunjs",100); 3 Person person1 =(Person) person.deepClone(); 4 5 //序列化方式 6 public class CloneUtils { 7 // 拷贝一个对象 8 @SuppressWarnings("unchecked") 9 public static <T extends Serializable> T clone(T obj) { 10 // 拷贝产生的对象 11 T clonedObj = null; 12 try { 13 // 读取对象字节数据 14 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 15 ObjectOutputStream oos = new ObjectOutputStream(baos); 16 oos.writeObject(obj); 17 oos.close(); 18 // 分配内存空间,写入原始对象,生成新对象 19 ByteArrayInputStream bais = new ByteArrayInputStream( 20 baos.toByteArray()); 21 ObjectInputStream ois = new ObjectInputStream(bais); 22 // 返回新对象,并做类型转换 23 clonedObj = (T) ois.readObject(); 24 ois.close(); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 return clonedObj; 29 } 30 }
转载于:https://www.cnblogs.com/liguo-wang/p/10463863.html
2019Java查漏补缺(二)相关推荐
- 前端面试查漏补缺--(二) 垃圾回收机制
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(一) 防抖和节流
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(三) 跨域及常见解决办法
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(十) 前端鉴权
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- C语言——基础查漏补缺(三):谭浩强红书刷题笔记大杂烩
相关文章: C语言--基础查漏补缺(一):超长文帮你理清一些概念 C语言--基础查漏补缺(二):<C程序设计试题汇编>应试概念总结 C语言--基础查漏补缺(四):利用<挑战程序设计竞 ...
- 算法岗面经整理!查漏补缺
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:阿毛冲冲冲,来源:NewBeeNLP(牛客网) 写在前面 三月面试 ...
- 2019/5/12 查漏补缺
目录 2019/5/12 查漏补缺 数据类型分为两大类:基本类型和引用类型: java中类的继承关系 关于接口 重载和重写 静态变量 java中的关键字和保留字 数据库操作 实现数据库收回部分权限的操 ...
- Android系统开发和性能优化——查漏补缺【建议收藏】
做了这么久性能相关的工作,也接触了不少模块,说实话要做好性能这一块,真心不容易.为什么这么说? 是因为需要接触的知识实在是太多了, Android 是一个整体,牵一发而动全身,不是说只懂一个模块就可以 ...
- Java基础查漏补缺(2)
Java基础查漏补缺(2) apache和spring都提供了BeanUtils的深度拷贝工具包 +=具有隐形的强制转换 object类的equals()方法容易抛出空指针异常 String a=nu ...
最新文章
- 在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统
- 福利丨机不可失!20G免费教材快来领!
- 揭秘ASP.NET 2.0的Eval方法(转)
- 14_面向对象API绘图、图中图 (A Plot inside of Another Plot)、设定绘图范围Setting the Plot Range、对数尺度Logarithmic Scale
- 重载和const形参
- 使用阿里云docker加速器
- 前端学习(1759):前端调试值之调试安卓设备的方法
- 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法
- 安装Win10,ERROR_0x8007025D问题解决
- 工作六年的前端开发在想什么
- html基础之弹性布局(dispaly :flex)
- wordpress本地网站怎么搬到服务器,如何把wordpress从本地服务器迁徙到网站主机上...
- 三思笔记专区,即将闪亮登场
- html设置表格列宽百 分比,WPS解决实现单页显示 高分辨率显示器百分之百比例下双页改单页方法...
- iOS开发app打包
- 众数和中位数的应用题_什么是众数和中位数
- ubuntu安装企业微信
- win7 两台PC网线直连创建家庭组局域网分享文件
- DDN周报 | 6月11日-6月15日
- CGAN条件对抗生成网络一瞥