java基础题二

1.&和&&的区别?

1.&:按位与,逻辑与

按位与:0&1=0;0&0=0;1&1=1

逻辑与:a==b&b==c(即使a==b已经是false了,程序还会继续判断b是否等于c)

2.&&:短路与

a==b&&b==c(当a==b位false则不会继续判断b是否等于c)

比如判断某对象中的属性是否等于某值,则必须用&&,否则会出现空指针

2.java中的final,finally,finalize的区别与用法

1.final

final是一个修饰符也是一个关键字

被final修饰的类无法被继承

final修饰一个基本数据类型的变量,则其数值一旦在初始化之后便不能更改;

如果是引用类型变量,则对其初始化之后便不能让其指向另一个对象。但是它指向的对象内容是可变的。

被final修饰的方法将无法被重写,但允许重载

注意:类的private方法会隐式地被指定为final方法

2.finally

finally是一个关键字。

finally在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出或者捕获,finally块都会执行,通常用于释放资源。

finally正常情况一定会被执行,但是有两个极端:

若果对应的try没有执行,则这个try块并不会被执行

如果在try块中jvm关机。例如system.exit(n),则finally块也不会执行

3.finalize

finalize()是Object类的protected方法,子类可以覆盖该方法以实现资源清理工作。GC回收对象之前都会调用这个方法。

3.hashCode()和equals()的区别

1equals既然已经能实现对比的功能了,为什么还要hashCode呢?

因为重写的equals里一般比较的比较全面比较复杂,这样的效率就会很低,而利用hashCode进行对比,则只要生成一个hash值进行比较就可以了,效率很高

2.hashcode既然效率这么高为什么还要用equals?

因为hashCode并不是完全可靠的,有时候不同的对象他们生成的hashCode也会一样,

所以hashCode只能说大部分可靠,并不是全部可靠。

总结:

equals相等的两个对象他们的hashCode肯定相等,也就是用equals对比是绝对可靠的

hashCode相等的两个对象他们的equals不一定相等,也就是hashCode不是绝对可靠。                                                                                                                                                  

3.java中操作字符串都有那些类?他们之间有什么区别?

String ,StringBuffer,StringBuilder

String和StringBuffer,StringBuilder的区别在于String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象,而StringBuffer,StringBuilder可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用String

StringBuffer和StringBuilder最大的区别在于,StringBuffer是线程安全的,二StringBuilder是非线程安全的,但StringBuilder的性能却高于StringBuffer,所以在单线程环境下推荐使用StringBuilder,多线程环境下推荐使用StringBuffer

  4.String str=‘a’与String str=呢哇String("a")一样吗?

不一样,因为内存的分配方式不一样。

String str ="a"-->常量池     String str=new String("a")-->堆内存

5.抽象类能使用final修饰吗?

不能。定义抽象类就是让其他类继承的,而final修饰的类不能被继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值