2020中软java面试题_2020年中软国际Java中级笔试面试题 PDF 下载

主要内容:

1、java 中==和 equals 和 hashCode 的区别 1)==若是基本数据类型比较,是比较值,若是引用类型,则比较的是他们在内存中的存 放地址。对象是存放在堆中,栈中存放的对象的引用,所以==是对栈中的值进行比较,若 返回 true 代表变量的内存地址相等; 2)equals 是 Object 类中的方法,Object 类的 equals 方法用于判断对象的内存地址引用 是不是同一个地址(是不是同一个对象)。若是类中覆盖了 equals 方法,就要根据具体代 码来确定,一般覆盖后都是通过对象的内容是否相等来判断对象是否相等。 3)hashCode()计算出对象实例的哈希码,在对象进行散列时作为 key 存入。之所以有 hashCode 方法,因为在批量的对象比较中,hashCode 比较要比 equals 快。在添加新元 素时,先调用这个元素的 hashCode 方法,一下子能定位到它应该旋转的物理位置,若该 位置没有元素,可直接存储;若该位置有元素,就调用它的 equals 方法与新元素进行比较, 若相同则不存,不相同,就放到该位置的链表末端。 4)equals 与 hashCode 方法关系: hashCode()是一个本地方法,实现是根据本地机器上关的。equals()相等的对象, hashCode()也一定相等;hashCode()不等,equals()一定也不等;hashCode()相等,equals() 可能相等,也可能不等。 所 以 在 重 写 equals(Object obj) 方 法 , 有 必 要 重 写 hashCode() 方 法 , 确 保 通 过

equals(Object obj)方法判断结果为 true 的两个对象具备相等的 hashCode()返回值。 5)equals 与==的关系: Integer b1 = 127;在 java 编译时被编译成 Integer b1 = Integer.valueOf(127);对于-128 到 127 之间的 Integer 值,用的是原生数据类型 int,会在内存里供重用,也就是这之间的 Integer 值进行==比较时,只是进行 int 原生数据类型的数值进行比较。而超出-128〜127 的范围,进行==比较时是进行地址及数值比较。 2、int、char、long 各占多少字节数 int\float 占用 4 个字节,short\char 占用 2 个字节,long 占用 8 个字节,byte/boolean 占用 1 个字节 基本数据类型存放在栈里,包装类栈里存放的是对象的引用,即值的地址,而值存放在堆里。 3、int 与 integer 的区别 Integer 是 int 的包装类,int 则是 java 的一种基本数据类型,Integer 变量必须实例化才能 使用,当 new 一个 Integer 时,实际是生成一个指向此对象的引用,而 int 是直接存储数 据的值,Integer 默认值是 null,而 int 默认值是 0

4、谈谈对 java 多态的理解 同一个消息可以根据发送对象的不同而采用多种不同的行为方式,在执行期间判断所引用的 对象的实际类型,根据其实际的类型调用其相应的方法。 作用:消除类型之间的耦合关系。实现多态的必要条件:继承、重写(因为必须调用父类中 存在的方法)、父类引用指向子类对象 5、String、StringBuffer、StringBuilder 区别 都是字符串类,String 类中使用字符数组保存字符串,因有 final 修饰符,String 对象是不 可变的,每次对 String 操作都会生成新的 String 对象,这样效率低,且浪费内存空间。但 线程安全。 StringBuilder 和 StringBuffer 也是使用字符数组保存字符,但这两种对象都是可变的,即 对字符串进行 append 操作,不会产生新的对象。它们的区别是:StringBuffer 对方法加 了同步锁,是线程安全的,StringBuilder 非线程安全。 6、什么是内部类?内部类的作用 内部类指在类的内部再定义另一个类。 内部类的作用:1)实现多重继承,因为 java 中类的继承只能单继承,使用内部类可达到多 重继承;2)内部类可以很好的实现隐藏,一般非内部类,不允许有 private 或 protected 权限的,但内部类可以;3)减少了类文件编译后产生的字节码文件大小;

内部类在编译完后也会产生.class 文件,但文件名称是:外部类名称$内部类名称.class。分 为以下几种: 1)成员内部类,作为外部类的一个成员存在,与外部类的属性、方法并列,成员内部类持 有外部类的引用,成员内部类不能定义 static 变量和方法。应用场合:每一个外部类都需要 一个内部类实例,内部类离不开外部类存在。 2)静态内部类,内部类以 static 声明,其他类可通过外部类.内部类来访问。特点:不会持 有外部类的引用,可以访问外部类的静态变量,若要访问成员变量须通过外部类的实例访问。 应用场合:内部类不需要外部类的实例,仅为外部类提供或逻辑上属于外部类,逻辑上可单 独存在。设计的意义:加强了类的封装性(静态内部类是外部类的子行为或子属性,两者保 持着一定关系),提高了代码的可读性(相关联的代码放在一起)。 3)匿名内部类,在整个操作中只使用一次,没有名字,使用 new 创建,没有具体位置。 4)局部内部类,在方法内或是代码块中定义类,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值