码迷,mamicode.com
首页 > 其他好文 > 详细

面试题

时间:2019-12-30 19:11:38      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:并且   处理   obj   操作   finally   对象关联   情况下   多态性   erro   

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

 

2、Java有没有goto?

     java中的保留字,现在没有在java中使用

 

3、&和&&的区别

  &和&&,都可以作为逻辑与运算。

  && 具有短路的功能。就是如果前一个条件不成立,不会执行后面的条件。

   当两边不是boolean时。&可以作位运算符

 

4、switch语句能否作用byte、long、String上?

  在switch(e)中,e只能是一个整数表达式或者枚举常量。

  Byte、short、int、char及其对应的包装类都可以支持使用。

  Long、double、float、boolean及其包装类不支持使用。

  JDK1.7之后才可以作用在string上。

 

5、short i=1;i=i+1;会报错。而 i+=1;就不会

  由于i+1时,会自动提升表达式的类型。变为int。所以int类型赋值给short类型。需要强转。

     i+=1;是java语言规定的运算符。java编译器会对它进行特殊处理,因此可以正确编译。

 

6、char型变量中能不能存储一个中文汉字?为什么?

  char型变量是用来存储Unicode编码的字符的,Unicode编码包含有的中文,都可以使用。不包含的就不能存储。

  并且,unicode编码占用两个字节,所以,char类型的变量也是占用两个字节

 

7、用最有效率的方法算出2乘以8等于几?

    可以用向左位移。2<<3。2向左位移3位。相当于2*2的3次方。Cpu支持的高效率算法。

    位移符号:

  m << n :相当于 m * 2的n次方

  m >> n :相当于m/2的n次方(原来是正,得数为正,反为负)

  >>> : 无符号右移。和右移一样。但是,得数是正数。

  没有<<<这个符号的。

 

 

8、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    是指引用变量不能变。

  变量所指的内容是可以变的。像这样:

  final int[] a = new int[2];

       a[0] = 3; //可以改变内容

       a = new int[5]; //不可以改变变量

 

9、静态变量和实例变量的区别?

   语法上:静态变量需要加static。实例变量不用

   运行时:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用

 

 

 

 

 

10、是否可以从一个static方法内部发出对非static方法的调用?

    不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用

 

11、Integer与int的区别

    Int是原始数据类型。Integer是int的包装类型。

  Int默认值为0;Integer的默认值为null;

 

12、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

  Math中提供了3中取整的方法:ceil、floor、round

  Ceil(天花板):表示向上取整。

  Floor(地板):表示向下取整。

  Round(四舍五入):其实是Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整

 

13、Overload和Override的区别?

  Overload(重载):同一个类中可以有多个名称相同的方法,但,参数列表各不相同。不是多态性。

     Override(重写/覆盖):覆盖/重写父类的方法。

 

13、接口和抽象类的解说

    接口可以继承接口。

  抽象类可以实现(implements)接口,

  抽象类可以继承具体类。

  抽象类中可以有静态的main方法。

 

14、abstract class和interface语法上有什么区别?

  1、抽象类可以有构造方法,接口中不能有构造方法。

  2.抽象类中可以有普通成员变量,接口中没有普通成员变量

  3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

  4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

  5. 抽象类中可以包含静态方法,接口中不能包含静态方法

  6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstatic final类型,并且默认即为publicstatic final类型。

  7. 一个类可以实现多个接口,但只能继承一个抽象类。

 

15、内部类可以引用它的包含类的成员吗?有没有什么限制?

    完全可以。如果不是静态内部类,那没有什么限制!

      如果用静态内部类来做一个特例。则只能访问外部类的静态成员变量。

 

16、String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

    没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。

 在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

 

 

17、是否可以继承string类

  不可以继承。String默认final修饰,是不可继承的。

 

18、String和StringBuffer的区别

      String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据

 

19、final, finally, finalize的区别

    final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。

  finally :异常处理语句结构的一部分,表示总是执行。

       finalize :Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用

 

 

20、能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?

    可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化,int 类型的高 24 位将会被丢弃,因为byte 类型的范围是从 -128 到 128。

 

21、error和exception有什么区别?

    error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。         

    exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

面试题

标签:并且   处理   obj   操作   finally   对象关联   情况下   多态性   erro   

原文地址:https://www.cnblogs.com/huangcan1688/p/12121193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!