基本类型、String类面试题

  • int 和 Integer 有什么区别
  1. int是java提供的8种原始数据类型之一,意思整型,占用4字节。
  2. Integer是java为int提供的封装类,是引用数据类型。
  3. int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer
  4. 在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
  5. 在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。
  6. 另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。
  • String 是最基本的数据类型吗?

   不是,其是一个对象

  • String类为什么不能被继承?

   因为String是这样定义的:public final class String extends Object,里面有final关键字,所以不能被继承!

  • String 和 StringBuffer 的区别
  1. 这两个类都实现了CharSequence接口。
  2. String 的长度是不可变的,StringBuffer 的长度是可变的。如果你对字符串中的内容经常进行操 作, 特 别 是内 容 要 修改 时 , 那么 使 用 StringBuffer , 如果 最 后 需要 String, 那么 使 用StringBuffer 的 toString()方法

   逻辑清晰回答法:

  1. 类型不同,因为不是一个类,也没有继承关系,做参数时不能共用
  2. String对象是不可变对象,不能修改值。而StringBuffer是可变对象,能修改值。
  3. 拼接字符串时,String会产生新对象,而StringBuffer只是增加新字符,不产生新对象,因此效率高。
  4. String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。
posted @ 2018-08-09 18:19  一辈子de赌注  阅读(148)  评论(0编辑  收藏  举报