那些隐藏的比较深的JAVA基本功装逼姿势,要面试的来看看
2016-06-30 22:08
525 查看
float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
访问修饰符public,private,protected,以及不写(默认)时的区别? 答: 修饰符 当前类 同 包 子 类 其他包 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × ×
按位与 a & b 相同位的两个数字都为1,则为1;若有一个不为1,则为0。 按位或 a | b 相同位只要一个为1即为1。 按位异或 a ^ b 相同位不同则为1,相同则为0 按位取反 ~a 内存中的0和1全部取反 左移 a << b 乘a * 2的b次方 带符号右移 a >> b a除以2的b次方(取整)</span> 无符号右移 a>>> b
是否可以继承String类? 答:String 类是final类,不可以被继承。 补充:继承String本身就是一个错误的行为,对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。
重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
String s = new String("xyz");创建了几个字符串对象? 答:两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象。
解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。 stack: 通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间 heap: 而通过new关键字和构造器创建的对象放在堆空间 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? 答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。