学习程序设计,最怕的事情可能就是遇到错误却找不到错在哪里。这里列举一下笔者发现的JAVA新人常犯的错误,供目前正在上笔者JAVA课程的学生参考,其他JAVA初学者亦可借鉴。
1、没有区分中英文
在JAVA语言中(实际上其他语言诸如C也一样),起特殊作用的分号“;”、括号(包括圆括号“()”、中括号“[]”、大括号“{}”),以及双引号 “""”、单引号等,都必须是英文的。若不小心输入为中文的,就会报语法错误。此类错误对于初学者来说非常隐蔽,常会耗费大量的时间和耐心。以分号为例, 可采用如下方法检测是不是误写为中文的了:按快捷键Ctrl+F,可打开搜索对话框,输入中文的分号,让它搜索,看搜索到的分号是不是应该写为英文的。为 保证能对整个程序文件进行搜索,可在搜索前预先把光标移动到程序的开始处。因为搜索默认情况下是从当前光标处搜索到文件尾,光标之前的内容不会搜索到。或 者使用某些搜索选项,让它搜索完整个文件。分别以EditPlus和Windows的记事本编辑器示例如下:
Editplus,确认选中红框中的选项。
记事本:如下图,默认向下搜索。向下搜索完后,再点击“向上”,让它向上搜索。
2、括号、引号等不配对
在程序中,圆括号(())、方括号([])、大括号({})以及双引号("")和单引号必须成对出现,否则报错。如以下的的错误“进行语法解析时已到达文 件结尾”,即是因为少了一个右大括号。为避免发生此类错误,可先把左右括号/引号写好,然后再往里面添加代码。
3、缺少大括号
对于if/else和循环,若只需执行一条语句,可以不用大括号。但是当需要添加语句时,就需要用大括号把多条语句包含起来。这一点容易被忽略,而一旦被 忽略,就是逻辑错误(程序能运行,但结果不对)。排查逻辑错误要比语法错误困难很多,因为编译器不会报错,所以常常会耗费大量时间和耐心。因此,为避免这 类错误,应养成习惯:即使只执行一条语句,也应用大括号包含。
4、类名/变量名写错或没有区分大小写
类名应保证正确,变量定义后,再使用此变量也应该保证与定义时的名字一致。 更容易出错的是,JAVA是区分大小写的语言,有人把String写成string,或者同一个变量名,前后使用时大小写不一致,都会报错。因此,当编译 器报“找不到符号”的错误时,就应该根据编译器的错误提示信息仔细检查相关类名/变量名是不是这两方面犯了错。例如,下图的错误分别是把类String写 成了string,以及定义了变量scan,但使用此变量时却写成了sscan。
5、公共类名应与文件名同名
我们一般写的类都是公共的(public),JAVA要求保存公共类的文件的文件名必须与类同名,而且要注意大小写。否则会报错:类XX是公共的,应在名为XX.java的文件中声明。这里的“XX”指代某个类名,以下亦然。
6、修改后未保存或未重新编译
发现错误更改后未保存,这时修改并未生效,因此应该首先保存。保存后还应重新编译生成新的字节码文件(.class)文件,因为真正运行的是字节码文件。不重新编译的话,运行的还是旧的字节码文件。
7、错误:仅当显式请求注释处理时才接受类名称“XX.JAVA”
这个错误是前一段时间批改学生程序时遇到的,程序本身没有发现任何问题,只是文件名写成了XX.JAVA,一时我也不知道错在哪里。后来把文件后缀 名.JAVA改为.java,就好了。由于笔者写程序时一直把后缀名写为.java,因此一直未遇到这种问题(或者遇到了,但是忘记了)。看到大写的后缀 名后,潜意识里认为后缀名属于Windows的概念,而Windows是不区分大小写的,因此也未在意。但我当时显然忽略了一点,当我们用javac命令 编译程序时,javac是JAVA的东西,它对于将要编译的文件的文件名,是区分大小写的。因此,文件名XX.JAVA与XX.java对它来说,是不一 样的。正如上面的第三条所讲,公共类名应与文件名同名,而且要注意大小写。而如果我们把javac写成JAVAC,则没有问题。因为javac命令是 Windows帮我们调用的,它不区分大小写。
8、设置classpath环境变量时忘了添加当前目录
在不使用IDE的情况下,若要引用第三方jar包,需把这些jar包引入到classpath环境变量中。但若设置classpath时,没有包含当前目 录(.),那么即使是在字节码文件所在的目录使用java命令运行此字节码文件,也会报java.lang.NoClassDefFoundError。 这是因为若不设置classpath,则classpath自动包含当前目录;而若设置后,则不再自动包含当前目录,需要我们显式指定包含,这一点与 path环境变量不同。
--------------------------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/pipijiqimao/archive/2012/11/14/2770676.html