java面试知识点汇总2

成员变量和方法是静态和非静态的统称,成员分为静态成员和非静态的成员。
----------------------------------------------------------------------
在静态方法中不能使用this和super关键字。
子类的继承性:
1.子类和父类在同一包中:除private外都可以继承
2.子类和父类不在同一包中:除了private和友好的(不写)的之外,都可以继承
变量和方法的调用:
1.private:只在当前类中可以用对象调用
2.友好的:同一个包下的其他类可以访问,但包外就不可以。
3.protect:在同包下的类中访问有效。 
4.public:在任何类中都可以使用对象调用,没有是否在同一包下的限制
----------------------------------------------------------------------

int和Integer的区别:
内存区别:基本数据类型直接分配内存,包装类必须在堆中创建对象
使用区别:基本数据类型的默认初始化值为0,包装类的默认初始化值为null。

有关Integet类和int类的面试题:
面试题1------------------------------------------------------------------
1.Integer类中提供了比较两个int类型值的大小的方法,该方法为compareTo方法,
该方法返回的结果为:第一个数如果大于第二个数返回-1,相等返回0,
第一个数小于第二个数返回1.
同样Byte类中也提供了比较两个数大小的方法,也为compareTo方法,
该方法的返回结果为:如果两个数相等那么返回0,
否则返回第一个数减去第二个数的值。
如:Byte a = new Byte("15");
    Byte b = new Byte("12");
    int result = a.compareTo(b); 
得到的result的值为3 = 15-12。

面试题2------------------------------------------------------------------
已知:
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
那么:
i1 == i2 的结果为true
i3 == i4 的结果为false
原因:Integer i1 = 127;执行时系统进行了自动装箱操作,
即在底层自动调用了Integer.valueOf(127);方法,查看源码我们得出以下结论:
在使用Integer类的valueOf(num);方法进行自动装箱时,
如果num不在[-128,128)范围之内,那么会生成新对象,即返回new Integer(num);
所以i3==i4的值为false。
Integer.valueOf方法在调用时,内部有一个缓存池cache,缓存池存储了[-128,128)
范围内的Integer对象,当num在这个范围之内时,不是创建新的Integer对象,而是
返回缓存池内的对象,因为两者值相等,所以返回缓存池中的同一个对象,
即指向缓存池中的同一个位置,故i1==i2的值为true。
----------------------------------------------------------------------
Integer底层设计时为什么使用[-128,128)缓存池?
原因:[-128,128)都是一些比较常用的数据,通过缓存池可以提高效率。
发现:范围刚好为byte类型的取值范围:-128~127。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值