java面试题汇总

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

可以。但只能有一个public修饰的类且类名必须与文件名相同。

2、Java有没有goto?

在java中是保留字。

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

可以。java使用16位的unicode字符集作为编码方式,支持中文,一个中文占两个字节,char字符类型在内存中占2位,所以可以支持。

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

2<<3  左移相当于乘以2的多少次方,位运算比*效率高 (m《n相当于m*2^n),右移相当于除以2的多少次方。

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

语法的区别:静态变量用static修饰,实例没有;

作用域区别:类变量该类的准备阶段开始存在,直到完全销毁该类,实例变量从创建该实例对象时存在,直到销毁该实例对象;

实例变量必须创建实例对象(new)才会被分配内存空间,类变量是加载类的字节码时就会分配内存;

实例变量需要创建该类的对象来引用,类变量直接类名来引用。

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

不可以。非static需要创建对象后才可以调用,而static在创建对象之前调用,所以static方法调用非static方法,会出现非static不知道是什么对象调用的情况。

7、Integer与int的区别?

integer是int的包装类,int是基本数据类型;

integer默认初始值是null,int是0(全局变量可以不赋初始值,会有默认值,方法里必须赋初始值);

integer必须实例化才可以使用(因为默认是null,int不用;

图片发自App

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

Math提供了三个方法:ceil(x),floor(y),round(z)其中ceil是向上取整,结果大于参数x,floor向下取整,结果小于参数y,round是四舍五入,相当于z+0.5后再向下取整,所以Math.round(11.5+0.5)=12;Math.round(-11.5+0.5)=-11。

9、Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

overload:重载。同一类中方法名相同,参数列表不同;(两同一不同)

override:重构。发生在继承中,子类的方法名跟父类的方法名相同,覆盖父类的方法。方法名与参数列表相同,子类返回值、抛出的异常比父类的要小,访问权限要比父类的大(两同两小一大)。

不可以只改变方法返回值。eg:int f();和void f();如果int a=f();系统可以识别返回值类型,若直接调用f();判断不出来调用的是哪个方法。所以java不能使用返回值类型作为区分方法重载的依据。

10、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

接口可以继承接口,而且可以继承多个接口。抽象类可以实现接口。抽象类可以继承具体类。抽象类可以有静态的main方法

你可能感兴趣的:(java面试题汇总)