Java基础面试题

以后将陆续将一些Java基础的面试题陆续更新到这篇文档中

1 Java SE

1.1 方法重载和重写的区别

方法重载发生在同一个类中,特点是“两同三不同”,参数列表不同

其中两同指的是,同一个类中,方法名称相同
三不同:参数列表的参数的类型,个数,顺序不同

方法重写发生在父类和子类中,特点是“一大两小两同”,参数列表相同
两同:①方法名相同
②参数列表相同
两小:①子类返回值类型小于等于父类返回值类型(返回值为基本数据类型时,必须相等)
②子类抛出的异常小于等于父类抛出的异常
一大:子类访问控制修饰符大于等于父类访问控制修饰符

1.2 ==和equals()的区别

对于引用类型来说,==比较的是内存地址的哈希值。通常来说,哈希值不同(==为false)表示两个对象并不是同一个对象(有很小的可能不同对象计算出的哈希值是相同的)。

==只是简单的比较哈希值,如果希望更严密的比较对象,如不仅比较地址,也要比较对象的值的话,就可以重写equals方法

equals()来自Object类,其中的实现就是返回==比较的结果。因此需要重写并实现。

注,String的equals()比较特殊,它已经重写过了,实现为,先通过==比较引用地址的哈希值,再逐一的比较字符是否相等,都通过了才返回true。

1.3 实例化数据的方式

此种类型的题多是选择题,牛客上有多种的实例化方式,以后遇到了可以粘过来。

数组实例化了以后不能再更改数组容量大小。

int [] a= new int[]{ 1 , 3 , 3}

1.3 Java中各种数据默认值

Byte,short,int,long默认是都是0
Boolean默认值是false
Char类型的默认值是’’
Float与double类型的默认是0.0
对象类型的默认值是null

1.4 Object类常用方法有那些?

equals()
hashcode()
toString()
wait()
notify()
clone() 浅复制
getClass()

1.5 形参和实参

此类型的题多是选择题。

形参是基本类型时,改变形参的值不会影响实参的值,因为基本类型是指传递

形参是引用类型时,改变形参的值会影响实参的值,因为引用类型是引用地址传递

1.6 String、StringBuffffer 和 StringBuilder 的区别是什么?

String是一个被final修饰的类,无实现接口和继承的类。因此对象不可变,在进行大量字符串拼接操作时性能在三者中性能最低。

StringBuffer 和StringBuilder 都继承自AbstractStringBuilder,因为没有final修饰,对象都是可变的,适用于进行字符串拼接操作。

区别在于相同情况下使用StringBuilder比StringBuffer仅能获得10%~15%性能的提升,但却要冒着多线程不安全的风险。

速度:StringBuilder>StringBuffer>String
StringBuilder线程不安全StringBuffer和String线程安全

1.7 讲下java中的math类有那些常用方法?

Pow():幂运算
Sqrt():平方根
Round():四舍五入
ceil():向上取整
floor():向下取整
Abs():求绝对值
Random():生成一个0-1的随机数,包括0不包括1

1.8 接口和抽象类的区别


                           未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值