温故一下,说不定有你遗忘了的(一)

前言

很多基础性的原理等等什么的,不在赘述,网上很多相关内容,这里仅仅是总结性并且很快能看完的结论.


java中==和equals和hashCode的区别

  • ==是对内存地址的比较,对比两个变量是否相同, Object默认的equals方法,是对比对象的地址,和==的结果是相同的的.但是在很多Obj的子类上面,很多都是覆写了equals方法的,比如String 不再是对比地址,而且对比具体的值.其他类,在没有覆写equals的话,使用的是obj的equals方法,直接对比复合数据类型的地址.
  • hashcode 会有一个大前提, 因为hashcode生成的是一个离散的数字,会有重复的概率,会首先得到两个结论
    (1)如果两个复合数据类型调用equals相同,那么生成的hashcode码是一定相同的.(2)如果两个复合数据类型调用equals不同,那个生成的hashcode码不一定相同.
  • 在Java具体中使用,体现在HashMap上面, HashMap在放入数据的时候首先会匹配hashcode,如果已经不存在相同的hashcode则直接放入,如果有相同的hashcode,会再去匹配的equals方法,如果不相同则放入其中,否则就不放入其中.同样,在get的时候会根据key.hashCode()算出数组下标,然后再看equels如果相同,就找到目标了,具体更多的HashMap数据存取的细节,就不在这里赘述了.

int与integer的区别

  • int 是基本数据类型
  • integer是对int的装箱
  • integer的默认值是null,int的默认值是0
  • integer实际是对int的引用,当new 一个Integer对象的时候 实际是生成一个指针 指向此对象,而int则是直接储存对象.

谈谈对java多态的理解

  • 首先,多态存在的几个必要条件
    (1).要有继承 (2).要有重写 (3).父类引用指向子类引用
  • 实际使用场景
    例如同样的父类引用,调用方法A,但是在不同的场景,执行不同的动作,例如同样的F1按键,在主界面是帮助,在聊天界面是头像,在设置界面是关于软件.
  • 多态的好处
    可替换,可扩展,接口性,灵活,简化.

String、StringBuffer、StringBuilder区别

  • 首先从速度上面来说:StringBuilder->StringBuffer->String
  • 其次StringBuffer对比StringBuilder来说StringBuffer是线程安全
    ,里面很多方法是Synchronized
  • 那StringBuilder的原理又是怎么样的?StringBuilder内部有一个字符数组,每次组装, 如果容量不够,就扩大容量,然后往里面添加字符,组装出想要的字符串.
  • 最后来说这个String,这个要分jdk版本来说,在1.5以前,String的拼接,其实每次都是创建一个新的String对象来处理的,但是在1.5以后,每次+的时候,创建的是StringBuilder去append的,这也是为什么直接使用加号组装字符串速度最慢的原因

继续更新中...

你可能感兴趣的:(温故一下,说不定有你遗忘了的(一))