Java八股文(1)

1. 装箱和拆箱:
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比 如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。 原始类型:boolean,char,byte,short,int,long,float,double 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
2.Int 与 Integer 区别(数值相等的情况下)

  ①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,i3的引用指向堆,而i4指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false
  ②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
  java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
  ③两个都是new出来的,都为false
  ④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比

3.重载(Overload)和重写(Override)的区别

重写(override)又名覆盖: 1.不能存在同一个类中,在继承或实现关系的类中; 2. 名相同,参数列表相同,方法返回值相同, 3.子类方法的访问修饰符要大于父类的。 4.子类的检查异常类型要小于父类的检查异常。 重载(overload) 1.可以在一个类中也可以在继承关系的类中; 2.名相同; 3.参数列表不同(个数,顺序,类型) 和方法的返回值类型无关。

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

4.优先队列Priority
  • 完全二叉树
  • Java中,堆顶元素为最小值,C++为最大值
  • 时间复杂度为n(log(n))
  • 当前节点设为k,则父节点为(k-1)/2(向下取整),左子节点(如果存在)为2k+1,右子节点为2k+2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值