剑指offer(2)
2016-02-29 21:48
281 查看
Chapter2
q2:Java中的数据类型?及其内存大小八种类型:
short(2)int(4)21亿 long(8)
float(4) double (8)
boolean
byte(1) -128~127
char(2)
java用的是Unicode编码 ,Unicode编码是16位二进制
初始化char的方式
char ch1 = 'E'; char ch1 = 69; char ch3 = '\u0045';
这三个char的都是大写字母E,其中ch3是Unicode码
Unicode码是16位二进制,也就是4位16进制 ch3就是 \u+四位16进制数
69的16进制就是45!
Q1:如何为自定义的一个类覆盖其
equals()方法
参考1
重写equals方法,要注意遵循五个原则:自反性,对称性,传递性,非空性,一致性
重写equals方法的一般方法
使用==操作符检查“实参是否为指向对象的一个引用”。
使用instanceof操作符检查“实参是否为正确的类型”。
把实参转换到正确的类型。
对于该类中每一个“关键”域,检查实参中的域与当前对象中对应的域值是否匹配。
对于既不是float也不是double类型的基本类型的域,可以使用==操作符进行比较;
对于对象引用类型的域,可以递归地调用所引用的对象的equals方法;
对于float类型的域,先使用Float.floatToIntBits转换成int类型的值,然后使用==操作符比较int类型的值;对于double类型的域,先使用Double.doubleToLongBits转换成long类型的值,然后使用==操作符比较long类型的值。
@Override public boolean equals(Object obj){ if(obj==this){ return true; } if(!(obj instanceof Point)){ return false; } Point p = (Point) obj; return p.x==this.x && p.y==this.y; }
参考2
其实equals方法和hashCode方法是紧密相关的
String的hashCode的算法就是把每一个char的值乘以31,作累加
Q2:Singleton单例模式的实现
参考
Q3:在排序的二维数组中查找指定数字
数组在内存中是连续的,所以通过下标读写元素的时间复杂度是O(1)
使用数组实现哈希表
相关文章推荐
- 第四天:css基础
- jQuery中通过ajax的get()函数读取页面的方法
- 细说React(二)
- 剑指offer(1)
- Demo14:图片渐入
- 2048
- JSP/Servlet认识
- 前端之JavaScript第一天学习(1)-JavaScript 简介
- HTML+CSS慕课网学习总结(六)
- 前端优化那点事
- django比较相等或者不相等的模板语法ifequal / ifnotequal
- pixi.js webgl库
- node.JS md5加密中文与php结果不一致的解决方法
- 【Usaco2016 FEB】Fenced In
- jQuery-源码阅读,JavaScript原生继承方式与jQuery中的继承
- jquery ajax异步请求
- 基于Bootstrap V3的Modal 进行 Dialog 二次封装 原创文章
- HTML+CSS慕课网学习总结(五)
- HTML系列(一):创建HTML文档
- jquery 选择器用法例(1)