检查代码错误

1、关于成员变量的问题
下面的代码有错误吗?

class Something {
    int i;
    public void doSomething() {
        System.out.println("I = " + i);
    }
}

上面的代码没错误。但是,如果把 i 放在方法内,那么这段代码就错了。
原因在于 i 是成员变量,成员变量有默认值,整型成员变量的默认值是0,调用该类的doSomething()方法,输出的结果是I = 0。

同样的问题,下面的代码有问题吗?

class Something {
    final int I;
    public void doSomething() {
        System.out.println("I = " + i);
    }
}

乍 一看,和上面代码没什么区别,只是加了一个final修师符。但这里的的确确是错误的代码,Final int i是个final的instant variable (实例变量,或叫成员变量)。Final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int I = 0;"。

2、关于类的问题

一个java类文件命名为OtherThing.java,而类的代码为:
class Something {
    private static void main(String[] something_to_do) {       
        System.out.println("Do something …");
    }
}

有错误吗?是正确的。 如果在源程序中包含有公共类的定义,则该源文件名必须与该公共类的名字完全一致,字母的大小写都必须一样。如果源程序中不包含公共类的定义,则该文件名可以任意取名。如果在一个源程 序中有多个类定义,则在编译时将为每个类生成一个.class文件。

3、关于接口问题
先看代码:
public interface TestInterface {
    int a = 0;
}
public class Something implements TestInterface {
    public void something() {
        TestInterface.a = 10;
    }
}

请问上面的代码有问题吗?错了,在接口中声明的属性默认隐含为 public static final,final修饰的属性值是不能修改的。

接口中只定义可实现的抽象方法,在具体继承接口的类中实现方法。下面给出一个接口的定义,指出错误:
1    public interface TestInterface {
2        int a = 0;
3        private void test();
4        public static void test();
5        public static final void test();
6        public final void test();
7        public void test(int a);
8        protected void test(String str);
9        abstract void test(double d);
10   }
(为了更好阅读,我在每行前加了行号)
如果在学接口的时候注意到这点的话,上面的内容很容判断出错误在哪里。这点就是:“ 一个Java接口的方法只能是抽象的和公开的,Java接口不能有构造子。
那么上面的代码错误很明显就是3,4,5,6,8行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值