zoukankan      html  css  js  c++  java
  • 剑指offer(2)

    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方法的一般方法
    1. 使用==操作符检查“实参是否为指向对象的一个引用”。
    2. 使用instanceof操作符检查“实参是否为正确的类型”。
    3. 把实参转换到正确的类型。
    4. 对于该类中每一个“关键”域,检查实参中的域与当前对象中对应的域值是否匹配。
    • 对于既不是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)
      使用数组实现哈希表

  • 相关阅读:
    批量清理java源码的target目录
    前端移动node_modules到其他位置
    oracle物化视图和视图的数据不一致
    百词斩英语单词素材提取、听力练习
    2048自动游戏AI, 最高可以玩出一二十个2048
    switcheroo: Alt+Tab的替代工具、窗口搜索
    为知笔记wiz.editor.md增强
    腾讯北极星 Polaris 试用
    [分布式] 分布式事务、seata
    Mysql查询所有的表名和查询表中所有的字段名
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/5229057.html
Copyright © 2011-2022 走看看