1.数据类型
补充:
整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
浮点型:float(4字节) \ double(8字节)
字符型:char (1字符=2字节)
2.修饰符
3.float f=3.4;是否正确?
答:不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型 (down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F。
4.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);其中有隐含的强制类型转换。
5.int 和 Integer 有什么区别?
答:Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据 类型,但是为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引 入了对应的包装类型(wrapper class),int 的包装类就是 Integer,从 Java 5 开始引入了自 动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:
- 原始类型: boolean,char,byte,short,int,long,float,double
- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
6.&和&&的区别?
答:相同点1:& 与 && 的运算结果相同
相同点2:当符号左边是true时,二者都会执行符号右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
//开发中,推荐使用&&
7.| 与 ||的区别?
答:相同点1:| 与 || 的运算结果相同
相同点2:当符号左边是false时,二者都会执行符号右边的运算
不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
//开发中,推荐使用||
8.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
答:Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是 在参数上加 0.5 然后进行下取整。
9.swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
答:在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java 5 开始, Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串 (String),但是长整型(long)在目前所有的版本中都是不可以的。
10.用最有效率的方法计算 2 乘以 8?
答: 2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。
11.数组有没有 length()方法?String 有没有 length()方法?
答:数组没有 length()方法,有 length 的属性。String 有 length()方法。
12.在 Java 中,如何跳出当前的多重嵌套循环?
答:在最外层循环前加一个标记(Label)如 A,然后用 break A;可以跳出多重循环。continue也一样。
13.构造器(constructor)是否可被重写(override)?
答:构造器不能被继承,因此不能被重写,但可以被重载。
14. == 和 equals 的区别是什么?
答:== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals