检查代码错误
来源:互联网 发布:cms系统开发文档 编辑:程序博客网 时间:2024/04/30 07:10
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的instantvariable (实例变量,或叫成员变量)。Final的instant variable没有defaultvalue,必须在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行。
下面的代码有错误吗?
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的instantvariable (实例变量,或叫成员变量)。Final的instant variable没有defaultvalue,必须在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行。
- 检查代码错误
- 代码检查错误列表总结
- 代码检查的错误列表
- 检查网页代码的错误
- 测试之代码检查错误罗列
- 错误检查
- 错误检查
- FindBugs-AndroidStudio代码错误自动检查插件
- 代码检查
- 代码检查
- 检查代码
- 代码检查
- 错误检查思路
- 程序错误检查工具
- EDAC检查内存错误
- 网页错误检查工具
- valgrind检查内存错误
- EDAC检查内存错误
- 标准串口的定义
- Ubuntu 8.04 AMD64平台下Realplayer 11安装指南
- cx
- 关于Java对象与对象引用
- 面试里经常遇到的一个关于StringBuffer和final的问题
- 检查代码错误
- 关于ubuntu下java6的doc安装问题
- 数学之美(系列七) 之 信息论在信息处理中的应用
- 数学之美(系列八)之 贾里尼克的故事和现代语言处理
- 数学之美(系列九) 之 如何确定网页和查询的相关性
- 数学之美(系列十) 之 有限状态机和地址识别
- 庆祝神舟七号载人飞船发射成功
- 数学之美(系列十一) 之 Google 阿卡 47 的制造者阿米特.辛格博士
- 数学之美(系列 12) 之 余弦定理和新闻的分类