Java 尚学堂百战程序员易错试题




************************************************************



                    题目来自尚学堂百战程序员试题



*************************************************************

如果需要源文件和答案,请添加我的微信回复【百战程序员】









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 方法的类







猜你喜欢

转载自blog.csdn.net/qq_35583772/article/details/80368608
今日推荐