2018Java面试题(Java基础部分)

1.Java中有哪些基本数据类型?String是基本数据类型吗?String类是否能够继承?
答:1.java定义了4中类8种基本类型: 
            整型:byte、short、int、long 
            浮点型:float、double 
            布尔型: boolean 
            字符型: char 
        2.String不是基本数据类型,String属于引用类型。 
        3.String类是一个final类,因此不能被继承。

2.简述++i和i++的区别?
答:

  int i=0;
  System.out.print("++i先自加1再赋值得到结果是=");
  System.out.println(++i);
  控制台打印:++i先自加1再赋值得到结果是=1
  ----------------------------------------
  int i=0;
  System.out.print("i++先赋值,然后再自加1得到结果=");
  System.out.println(i++);
  控制台打印:i++先赋值,然后再自加1得到结果=0
1
2
3
4
5
6
7
8
9
3.short s=1;s=s+1;有什么错?short s=1;s+=1;有什么错?
答:1.对于short s=1;s=s+1;由于short数据类型和int数据类型表示范围不一样,所以需要进行类型转换,解决方案是:要么将short改为int,要么强制类型转换(short)s+1。 
      2.对于 short s=1;s+=1;由于+=是Java的规定运算符,Java编译器会对它进行特殊处理,因此可以正确编译。

4.Integer和int的区别?
答:参考博客 Integer是一个封装int类型的封装类,默认值为null,int是Java中8中数据类型之一,默认值为0.

5.&和&&的区别?
答:&表示逻辑运算符:必须计算左右两个表达式之后再取结果值。&&表示运算符先计算左边表达式如果为true,则不计算右边。如果左边表达式为false那么就需要计算右边表达式。

6.使用最有效的方式计算出2乘以4等于几?
答:使用位运算:2<<2

位运算符    功能    案例    说明
<<    左移    a< < b    将a各比特位向左移动b位
7.String s=new String(“xyz”)创建了几个对象?
答:创建2个String对象,一个是=null的s,一个是=“xyz”的string。

8. 静态变量和实例变量的区别?
答:1.在语法上的区别:静态变量前需要加static关键字,而实例变量不需要加。 
       2.静态变量不是某一个实例对象的属性,它属于类属性,只要程序加载类的字节码,不需要创建任何实例对象静态变量就可以分配空间从而被使用。必须先创建实例对象,实例变量才会被分配空间,才能使用这个实例变量。 
       3. 无论创建多少实例对象,永远只分配一个静态变量。创建一个实例对象静态变量会加1,但是每创建一个实例对象就会分配一个实例变量,每个实例变量的值只会自加1.

public class TestProblem {
    static int a=0;
    int b=0;
    public TestProblem() {
        a++;
        b++;
        System.out.println("静态变量数值:"+a);
        System.out.println("实例变量数值:"+b);
    }
    public static void main(String[] args) {

        TestProblem testProblem=new  TestProblem();
        System.out.println("------------");

        TestProblem testProblem1=new  TestProblem();

    }
}
控制台打印结果:
   静态变量数值:1
   实例变量数值:1
   ------------
   静态变量数值:2
   实例变量数值:1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
9.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
答:1.switch常量表达式的值必须是整型(必须是int)或字符型。 
     2.在.switch表达式中,括号表达式只能是一个整型表达式或枚举常量整数表达式可以是int基本数据类型会Integer包装类型。由于byte、short、char都可以隐式转换为int,所以这些基本数据类型及其包装类型都可以。 
          3.long和String无法隐式转换为int类型所以不能在switch中使用。

10.简述String、StringBuffer 和 StringBuilder 区别
答:1.String和StringBuffer的区别:它们都是用于存储和操作字符串,01.String是一个final类表示的类容不可改变。StringBuffer表示的内容可以修改。02.String实现了equals()方法,StringBuffer没有。 
        2.StringBuffer 和 StringBuilder 区别:01.StringBuffer是线程安全的可以在多线程中使用。 StringBuilder是线程不安全的,但是运行效率非常高! 
          3.参考博客String、StringBuffer 和 StringBuilder 区别

11.简述自动装箱和自动拆箱
答: 参考:深入剖析Java中的装箱和拆箱

12.简述Java中实现多态的机制是什么?
答:重载(overloading)、重写(overriding) 
       1.重载(overloading):是一个类中多态的表现,比如一个类中定义多个同名的方法,但它们具有不同的参数或不同参数类型都称之为重载。 
       2.重写(overriding):子类定义一个方法和父类的方法名称参数都相同,那么父类的方法被重写。 
       3.参考:理解java的三大特性之多态

13.简述Java反射机制及其作用?
答:1.Reflection:是Java被视为一种动态语言的一个关键性质,这个机制允许程序在运行时通过Reflection API获取任意一个已知名称Class的内部信息。并可在运行时改变字段内容,唤起methods。 
       2.参考:Java反射机制详解 
       3.Java API:Class类中的方法

14.简述ArrayList和LinkedList的区别?
答:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
       2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
       3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 
       4.参考:ArrayList和LinkedList的区别

15.简述HashMap的工作原理及HashMap和Hashtable的区别?
答:1.参考:HashMap的工作原理 
       2.参考:参考:HashMap的工作原理 
       3.参考:HashMap和Hashtable的区别 
       4.参考:深入探讨HashMap的结构实现和功能原理。

16.简述java中super()和this()、super和this的区别?
答:1.super()和this()区别:

super():调用父类无形参的构造方法;
super(形参):调用父类中某个带形参的构造方法;
this(形参):调用本类中另一种形式的构造方法
注意:放在方法的首行; 
   2.super和this的区别:

super.父类的成员变量;

super.父类的方法;
super:当子类中的成员变量、方法和父类的相同时,实现调用父类的成员变量和方法;
this:代表当前的对象;
使用的地方:若函数的形参和成员变量同名时,需要用this.成员变量名
--------------------- 
作者:凯耐 
来源:CSDN 
原文:https://blog.csdn.net/weixin_36279318/article/details/80555752 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值