Java相关问题

使用final 关键字修饰-一个变量时,是引用不能变,还是引用的对

象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以

改变的。

Java中equals与“==”的区别

== :比较的是值是否相等                     在基本数据类型:值内容, 引用类型时:地址
equals:比较的是是否是同一个对象     重写:值内容 , equals不重写:地址

Java接口的修饰符可以为()

接口的方法默认是public abstract
接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。接口中方法的修饰符:public abstract(默认不写)

谈谈你对多态的理解

 Java实现多态有三个必要条件:继承、重写、向上转型

  • 可替换性:多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
  • 可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
  • 接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
  • 灵活性:它在应用中体现了灵活多样的操作,提高了使用效率。
  • 简化性:多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

equals()和hashcode() 方法的区别


1.如果两个对象相同,那么它们的hashCode值一定要相同
 
2.如果两个对象的hashCode相同,它们并不一定相同(这里说的对象相同指的是用eqauls方法比较)。
如不按要求去做了,会发现相同的对象可以出现在Set集合中,同时,增加新元素的效率会大大下降。
3.equals()相等的两个对象,hashcode()一定相等;equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。
换句话说,equals()方法不相等的两个对象,hashcode()有可能相等(我的理解是由于哈希码在生成的时候产生冲突造成的)。反过来,hashcode()不等,一定能推出equals()也不等;hashcode()相等,equals()可能相等,也可能不等。

在object类中,hashcode()方法是本地方法,返回的是对象的地址值,而object类中的equals()方法比较的也是两个对象的地址值,如果equals()相等,说明两个对象地址值也相等,当然hashcode()也就相等了;在String类中,equals()返回的是两个对象内容的比较,当两个对象内容相等时,Hashcode()方法根据String类的重写代码的分析,也可知道hashcode()返回结果也会相等。以此类推,可以知道Integer、Double等封装类中经过重写的equals()和hashcode()方法也同样适合于这个原则。当然没有经过重写的类,在继承了object类的equals()和hashcode()方法后,也会遵守这个原则。

String 、StringBuilder、 StringBuffer区别

  1. String是不可变字符串对象,每次修改字符串都会创建新对象;线程安全;使用于少量字符串操作的场景;
  2. StringBuilder、StringBuffer是可变字符串序列(对象),StringBuilder 和 StringBuffer在修改字符串时不会创建新对象;当需要对字符串频繁的修改时,推荐使用StringBuilder或 StringBuffer。
  3. 二者的常用方法名和实现原理是一样的。区别在于StringBuffer是线程安全的,StringBuilder是线程不安全的。
  4. StringBuffer使用于多线程环境下的大量操作的场景,StringBuilder使用于单线程环境下的大量操作的场景;如果不涉及线程安全问题,推荐使用StringBuilder,因为它的效率会更高一些,执行效率上:StringBuilder快于StringBuffer快于String

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值