面试题整理1

1.基本类型和包装类的区别

声明方式不同:基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

存储方式及位置不同:基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

初始值不同:基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;

使用方式不同:基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。

2.一个对象要存储在Set中,必须重写equals和hashCode方法的原因?

Set 集合有去重的功能,但是在向 Set 集合中添加自定义的对象时无法去重,我们重写一下 User 类的 equals 和 hashCode 方法(此处的 equals 和 hashCode 为 IDEA 自动生成的)。
详解

3、string、stringbuilder、stringbuffer介绍

String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象
如果在做大量字符串拼接效率时变得比较低,因为虚拟机需要不断地将对象引用指向新的地址。因此,一般方法内的私有变量推荐使用stringBuilder来完成,如果是多线程需要同步的自然选用stringBuffer。

4.包装类作为形参,不能改变实参的值

是因为赋的那个值不超范围是方法区中的缓冲的值?
当然不是,是因为所有的包装类都是final修饰的,都是不可变类。

猜你喜欢

转载自blog.csdn.net/Crush_kylin/article/details/101557109