java基础知识的梳理(一)

知识点来自面试总结帖: BAT大厂面试题整理 

想尝试总结前三个部分的知识点,也一并总结一下相关的延伸知识和曾经踩过的雷,这一篇先总结java吧

漫漫长路,先迈出第一步吧


(一)java基础知识

     1. java中==和equals和hashCode的区别

         == 属于运算符,一般多用于基本类型的比较,如int, float, double, char, boolean;作用于对象则会比较两者的内存地址

        equals() 则是Object基类中提供的一个允许重写的方法,用于比较对象的值是否相等。 常见的例子有java包装类(如Integer、String、Float类型)的比较。若自定义一个继承自Object的类,由于父类的equals()仅return obj1 == obj2;需重写equals(),定义比较方法。

        hashCode()是用于获得某一变量或对象的哈希值的方法,当比较对象的值相等时,对应hashCode值一定相等;反之,若 hashCode值相等,则实际值不一定相等。

        *哈希值可以简单地理解为存储地址,hashCode()的本质是 一个由值到存储地址的映射关系(函数),即 存储地址=f(变量值) [形如 y=f(x)]。 这种方式可以方便地进行随机读写,简化判断等操作,但也存在发生存储地址冲突的可能性,也即不同的x对应了相同的y值。好的映射关系能减少冲突发生的次数,但不能完全避免。一个解决办法是使用链地址法

    2. int、char、long各占多少字节数

        java中int为4个字节,char为2个字节,long为8个字节。(1Byte = 8bits)

    3. int与integer的区别

        int是基本数据类型,其默认值为0,可以进行赋值、比较、运算等操作,无法调用方法、实例化对象;

        Integer是Java中的包装类,继承自Object基类,其默认值为null,需实例化后使用。

        *Integer的两种实例化方式:       

       Integer a = 100;
       Integer b = new Integer(100);

        Integer实际保存对象的引用,所以当使用new()实例化Integer对象后,比较内存地址的==运算符返回的结果均为false;对于第一种情况,Integer类将转换执行Integer.valueOf(100),该方法首先判断值是否属于(-128,127),这些值事先已建立了缓存,若满足判断,将直接把缓存区的引用赋给变量。 

       Integer c = 100;
       return a == b;//return false
       return a == c;//return true

       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值