java面试题
java有哪些数据类型?
基本数据类型:
数值型:字节型(byte)、短整型(short)、整型(int)、长整型(long)
字符型(char)
布尔型(boolean)
引用数据类型:类(class)、接口(interface)、数组
Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。
float f = 3.4是否正确?
不正确,3.4是双精度数,将双精度数(double)、赋值给浮点型(float)、属于向下转型(down-casting)会造成精度损失,因此需要强制类型转换 float = (float) 3.4或写成 float f = 3.4F;
访问修饰符publlic 、private、protected以及不写(default)的区别
定义:java中,可以使用访问修饰符来保护对类、变量、方法和构造函数的访问。java支持四种不同的访问权限。
分类:
private:对同一类内可见。使用在变量、方法之上,不能修饰类。
default:同一包内可见,不使用任何修饰符。使用在类、接口、变量、方法之上;
protected:对同一包内的类和所用子类可见。使用在变量、方法。不能修饰类。
public:对所有类可见。使用对象:类、接口、变量、方法。
运算符:&和&&的区别
&运算符有两种用法:(1)按位与;(2)逻辑与。
&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。
注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。
重载和重写的区别?
定义:
1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
区别:
1、规则上的不同?
重载的规则:
(1)、必须具有不同的参数列表
(2)、可以有不同的访问修饰符
(3)、可以抛出不同的异常
重写的规则:
(1)、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载
(2)、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载
(3)、访问修饰符的限制一定要大于被重写方法的访问修饰符
(4)、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
2、类的关系上的区别:
重写是子类和父类之间的关系、是垂直关系;重载时同一个类中方法之间的关系,是水平关系。