************************************************************
题目来自尚学堂百战程序员试题
*************************************************************
如果需要源文件和答案,请添加我的微信回复【百战程序员】
37、标识符能不能使用汉字开头? 为什么?
能使用汉字开头,字母的含义包括英文字母和汉字(但不推荐使用汉字开头)
float 类型的数据在内存中的存储形式为科学计数法, 且有效位数为7位, 则d1为4.2343242E7, d2用科学计数法表示同样为4.2343242E7, 因此d1 == d2
一般来讲,==和!=在针对浮点数的时候,两边都必须是字面量。意思就是,左边是1.0,右边是1.0,他们中间复制了几次,总之只要他们不是被计算出来的,可以比较。
但是如果是计算出来的——可没有人告诉你0.1+0.1就是0.2。0.1这个值其实是不存在的,因为它不能被处理成一个2进制的有限小数。所以你对两个不存在的值进行相加,就会得到一些奇怪的误差,所以才不能==。
到底0.1+0.1和0.2相比,到底是谁大谁小还是一样,完全取决于你的C++编译器在对付2进制无限小数的时候,到底用什么样的截断策略——譬如说ceil、floor、round,都是有可能的。如果这个策略你已经清楚了,那你自己也可以判断到底是什么结果。
反过来,只要是精度以内的二进制有限数字就可以。譬如说,0.25+0.25,肯定就==0.5,没有问题。
作者:vczh
链接:https://www.zhihu.com/question/21175703/answer/237838947
来源:知乎
60、 5*4 最快的运算方式是?
位运算5<<2
65、 long 能自动转换成int 吗?long能自动转换成float吗?
long 可以自动转成int
long 可以自动转成float
67、 switch 语句的功能是否完全可以使用if else if else 多选择结构来代替?如果是,为什么还需要switch结构?
可以
switch 一般用来做多值的判断,如果判断条件为区间, 则最好使用多重if来做,
如果是等值情况最好使用switch来做
163、 import Java.util.*; 会不会降低程序运行速度? 为什么?
不会降低程序的运行速度
因为是导入该包下的所有的类,会降低编译速度
183、 假如父类有main方法,子类能不能继承?
不能(但请看完)
在sun的Java Tutorial介绍中写到,子类可以继承父类所有的属性和方法,只是对于私有的不能访问,也就是理论上可以继承父类的main方法,我们来做个试验
package cn.swu.storm.testExtends; public class Person { int age; private String name ; public static void main(String[] args) { System.out.println("This is Father"); Student student1=new Student(); student1.main(null); } } class Student extends Person{ }
可以看到运行结果试栈溢出,所以子类不能继承父类中带有 main 方法的类;
但是:
我们可以通过重写父类的 main 方法而实现继承;
package cn.swu.storm.testExtends; public class Person { int age; private String name ; public static void main(String[] args) { System.out.println("This is Father"); Student student1=new Student(); student1.main(null); } } class Student extends Person{ public static void main(String[] args) { System.out.println("This is Child"); } }
这时运行时系统会问是从 父类的 main 方法中进入,还是子类的main 方法中进入
我们先选择从父类中进入:
如果我们从子类 main 方法中进入:
所以子类 不能不重写就直接继承父类中含有 main 方法的类