Java面试题

2018-12-17 10:47:56来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1.面向对象的特征有哪些方面?

  封装,继承,多态(重载【编译时确定类型】和重写【运行时确定类型】两种)

2.有了基本数类型,为什么还要包装类型?

基本数据类型:Java提供八种基本数据类型,boolean,int,float等

包装类型:每个基本数据类型都会对应一个包装类型

装箱拆箱:

装箱:把基本数据类型转化成对应的包装类型

Integer i = 1; 实际上在编译时会调用Integer.valueOf方法来装箱

拆箱:int j = i;相当于int j = i,intValue();

Java是一种面向对象的语言,而基本的数据类型不具备面向对象的特性。

Null  Integer--null int--0 分别用Integer和int表示Person这个类的id

MAX

MIN

缓存值:Integer i =1; Integer j =1;i==j;

3.说一下“==”和equal方法的区别?

==比较两个变量是否相等,变量有两种,如果是基本类型变量,直接比较两个变量的值,吐过是应用类型变量,比较的是两个变量的地址。

equal方法是object类的方法,equals方法比较的是两个对象是否具有一些相同的属性值。

4.讲一下String Stringbuilder Stringbuffer?

在Java中,提供三个类String ,Stringbuilder ,Stringbuffer 来表示和操作字符串。

String是内容不可变的字符串,String 底层使用了一个final修饰的字符数组(final char【】)String str= new String(“aaa”);

Stringbuilder和Stringbuffer是可变的字符串,底层使用的是可变的字符数组(没有fanal修饰)

最经典的字符串拼接:

String str = “a”+"b";(创建了三个对象)

Stringbuilder stringbuilder = new Stringbuilder(“a”).append("b");

Stringbuilder:线程不安全,效率高

Stringbuffer:线程安全(需要加锁保证同步),效率底

5.说一下Java中的集合?

Java中的集合分为两种:一种存储值(Collection),一种存储键值对(Map)

Collection又可以分为两种:

    List:有序可以重复

 Set:无须不可重复。根据equals方法和hashcode判断,也就是说如果一个对象要存储在set中,必须重写equals和hashcode方法。

6.ArrayList和LinkedList的区别?

ArrayList底层使用的是数组,LinkedList底层使用的链表

ArrayList:查询特定元素比较快(因为有索引),插入和删除比较慢(因为数组在内存中是一段连续的存储空间,插入和删除元素需要移动数组)。

LinkedList:查询效率低(链表不要求内存是连续的,查询需要从头部开始,按照指针方向一个一个找),插入和删除效率高(不需要移动内存,只需要改变引用的指向即可)。

使用场景:

ArrayList使用在查询比较多,但是插入和删除比较少的情况,LInkedList使用在查询比较少,而插入和删除比较多的情况。

 

 

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java异常(一)Java异常简介及其框架

下一篇:文件上传的动作不能太俗,必须页面无刷新上传