总结一些Java问题

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));
}

当k的值在[-128,128)的时候,输出true,其它情况输出false。什么路子?

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。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值