1.下面的代码有什么错误,如何表现
public static void main(String[] args) {
static int num[] = new int[10];
System.out.println(num[10]);
}
说明:static不能修饰局部变量(编译错误)。去除static关键词后,运行期抛出越界异常。
2.'$' '|' '^'的使用
public static void main(String[] args) {
int m = 5, n = 5;
if ((m != 5) && (n++ == 5)) {
}
System.out.println("a." + n);
m = n = 5;
if ((m != 5) & (n++ == 6)) {
}
System.out.println("b." + n);
m = n = 5;
if ((m == 5) || (n++ == 5)) {
}
System.out.println("c." + n);
m = n = 5;
if ((m == 5) | (n++ == 6)) {
}
System.out.println("d." + n);
}
输出结果:5 6 5 6
3.Math.abs()的特殊值
int num = Integer.MIN_VALUE;
int s = Math.abs(num);
s==num?是的相等。以byte为例,范围是[-128,127],没有128,将整形的128强制转换为byte就是-128
4.自动装箱的疑惑
for(int k = -200; k < 200; k++) {
//int k = 100;
Integer int1 = k;
Integer int2 = k;
System.out.println(k +":" + (int1 == int2));
}
5.正确的调用静态方法
public class Test3 {
public static void main(String[] args) {
Parrent p = new Parrent();
Parrent c = new Child();
System.out.println(p.getName());
System.out.println(c.getName());
}
}
class Parrent {
public static String getName() {
return "Parrent";
}
}
class Child extends Parrent {
public static String getName() {
return "child";
}
}
当然标准的写法是使用类名直接调用。使用对象调用时,我觉得应该是在编译的时候就进行了处理。
6.移位操作
int num = 32;
System.out.println(num >>= 32);
num >>= 32;
System.out.println(num);
num = num >> 32;
System.out.println(num);
输出什么结果?32。太不可思议了吧。好多人可能没有注意过这个问题,实际上第三种写法,编译器会给出明确的提示:超出合理范围31(int类型数据占32位)。同样long类型最大值是63。