1.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数 上加 0.5 然后进行下取整。
2.flfloat f=3.4; 是否正确
不正确。
3.4
是双精度数,将双精度型(
double
)赋值给浮点型(
flfloat
)属于下转型(
down
casting
,也称为窄化)会造成精度损失,因此需要强制类型转换
flfloat f =(flfloat)3.4;
或者写成
flfloat
f =3.4F;
。
3. short s1 = 1; s1 = s1 + 1; 有错吗 ?short s1 = 1; s1 += 1; 有错吗
对于
short s1 = 1; s1 = s1 + 1;
由于
1
是
int
类型,因此
s1+1
运算结果也是
int
型,需要强制转换
类型才能赋值给
short
型。
而
short s1 = 1; s1 += 1;
可以正确编译,因为
s1+= 1;
相当于
s1 = (short(s1 + 1);
其中有隐含的强
制类型转换。
4.访问修饰符 public,private,protected,以及不写(默认)时的区别
private :
在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
default (
即缺省,什么也不写,不使用任何关键字)
:
在同一包内可见,不使用任何修饰符。
使用对象:类、接口、变量、方法。
protected :
对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类
(外部类)。
public :
对所有类可见。使用对象:类、接口、变量、方法
![](https://i-blog.csdnimg.cn/blog_migrate/05a7e533f25fb15a69c968ef5ed4c3e9.png)
5. &和&&的区别
&运算符有两种用法:(1)按位与;(2)逻辑与。
&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端 的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表 达式的值是 false,右边的表达式会被直接短路掉,不会进行运算
6.final 有什么用?
被
final
修饰的类不可以被继承
被
final
修饰的方法不可以被重写
被
final
修饰的变量不可以被改变,被
final
修饰不可变的是变量的引用,而不是引用指向的内容,
引用指向的内容是可以改变的
7. final finally finalize 区别
final
可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、
修饰变量表 示该变量是一个常量不能被重新赋值。
finally
一般作用在
try-catch
代码块中,在处理异常的时候,通常我们将一定要执行的代码方法
finally
代码块 中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代
码。
fifinalize
是一个方法,属于
Object
类的一个方法,而
Object
类是所有类的父类,该方法一般由垃圾
回收器来调 用,当我们调用
System.gc()
方法的时候,由垃圾回收器调用
fifinalize()
,回收垃圾,一 个对象是否可回收的 最后判断。
8. 构造器( constructor )是否可被重写( override )
构造器不能被继承,因此不能被重写,但可以被重载。
9.重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类 型进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是 运行时的多态性。
重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不同、顺序不同),与 方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分
重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于
父类,访问修饰符大于等于父类(里氏代换原则);如果父类方法访问修饰符为
private
则子类中
就不是重写