基本类型、String类面试题
- int 和 Integer 有什么区别
- int是java提供的8种原始数据类型之一,意思整型,占用4字节。
- Integer是java为int提供的封装类,是引用数据类型。
- int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer
- 在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
- 在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。
- 另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。
- String 是最基本的数据类型吗?
不是,其是一个对象
- String类为什么不能被继承?
因为String是这样定义的:public final class String extends Object,里面有final关键字,所以不能被继承!
- String 和 StringBuffer 的区别
- 这两个类都实现了CharSequence接口。
- String 的长度是不可变的,StringBuffer 的长度是可变的。如果你对字符串中的内容经常进行操 作, 特 别 是内 容 要 修改 时 , 那么 使 用 StringBuffer , 如果 最 后 需要 String, 那么 使 用StringBuffer 的 toString()方法
逻辑清晰回答法:
- 类型不同,因为不是一个类,也没有继承关系,做参数时不能共用
- String对象是不可变对象,不能修改值。而StringBuffer是可变对象,能修改值。
- 拼接字符串时,String会产生新对象,而StringBuffer只是增加新字符,不产生新对象,因此效率高。
- String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。