学习一种新的编程语言总是一种挑战,因为简单的失误就可以产生错误,对于门外汉来说都是神秘和充满困惑的。如果你不是足够幸运有一个有经验的程序员在旁边看着你并提供指导,排除你代码的故障将是非常令人沮丧的。 如果你正学习Java语言,你在编译和执行代码的时候遇到问题,一般来说问题将分为2类:无论你遇到的是编译时错误,这说明你的程序编译失败,还是你遇到运行时错误,这是指错误发生在你成功地编译了程序但不能运行并且没有产生错误。当然,在你遇到一个运行时错误之前,你的代码必须首先能够编译,所以在这里我们将研究最常见的开发者可能遇到的编译时错误的原因。
最常见的编译时错误 我们将使用下面的代码作为一……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
学习一种新的编程语言总是一种挑战,因为简单的失误就可以产生错误,对于门外汉来说都是神秘和充满困惑的。如果你不是足够幸运有一个有经验的程序员在旁边看着你并提供指导,排除你代码的故障将是非常令人沮丧的。
如果你正学习Java语言,你在编译和执行代码的时候遇到问题,一般来说问题将分为2类:无论你遇到的是编译时错误,这说明你的程序编译失败,还是你遇到运行时错误,这是指错误发生在你成功地编译了程序但不能运行并且没有产生错误。当然,在你遇到一个运行时错误之前,你的代码必须首先能够编译,所以在这里我们将研究最常见的开发者可能遇到的编译时错误的原因。
最常见的编译时错误
我们将使用下面的代码作为一个Java示例类作为讨论:
public class Game { public static void main(String args[]) { System.out.println("If I choose Paper,"); System.out.println("And you choose Scissors,"); System.out.println("Then I win, and you lose!"); } } |
Java文件错误的命名方式——Java文件的名称必须和代码中相关的公共类完全匹配。因此,如果你的代码包含一个公共类“Game”,Java文件必须命名为“Game.java”,而不能命名为“game.java”,或者是“GAME.java”,再或者是“MyGame.java”。该文件的名称和公共类的名称在拼写和大小写上都必须完全匹配。
代码错误的大小写——Java对大小写敏感,因此“public”与“Public”或“puBliC”都是不相同的。Java新手往往利用首字母大写,反之亦然,由于大小写错误导致他们编写的代码编译失败。为了进一步复杂化这个问题,编译时错误信息由于大写问题往往是隐蔽和没有帮助的。例如,如果你把主方法中的声明“public static and void”第一个字母大写,你会得到以下错误消息,说需要一个分号,这真的不是问题的根本:
C:_jdk1.7bin>javac Game.java |
错误匹配的括号——你可以看到你的代码中的每一个开着的括弧,它可能是一个方括号,大括弧或圆括号,你需要一个与之匹配的关闭的括弧。有时,一个程序员会忘记关闭方法的括弧,或者他们会记得关闭一个方法的括弧,但是忘记关闭类的括弧。不管它是如何发生的,如果括号不匹配,你将会一直得到一个编译时错误。
例如,一个Java类的最后一个大括弧不关闭,试图编译代码将产生下列编译时错误:
C:_jdk1.7bin>javac Game.java Game.java:11: error: reached end of file while parsing } 1 error |
就我个人而言,每当我创建一个新的方法或类时,在敲入开始的括弧之后,我总是敲一些回车,然后添加一个结束的封闭括号。我只有在括号匹配的情况下我才会开始类主体或方法的代码编码。这样,你的括号会总是匹配状态,你样就可以在编写类或者方法代码时,不用担心将来的某个时刻需要关闭括号。
漏掉分号——人们越来越熟悉的Java另一个常见编码错误是漏掉需要的分号。作为一项规则,每一个语句必须以分号结束。不幸的是,这个规则有时可能会像它的作用一样另人费解,尤其是当你有一个很难弄清楚它到底是不是一个语句的时候。
例如,在一个方法的主体里面,所有的“system.out.print”调用都以分号结束。如果我们在一个方法体中忘记给“system.out”加上分号,我们将会得到一个编译时错误消息,就像下面一样:
C:_jdk1.7bin>javac Game.java Game.java:7: error: ';' expected System.out.println("Then I win and you lose!") 1 error |
容易混淆的部分是由于在Java中并不是每一行你写的代码就是一个语句。例如,类声明是不被视为一个语句,所以它不跟分号。同样,一个方法声明是不被视为一个语句的,所以它也不跟分号。要想容易识别哪个是一个语句哪个不是一个语句需要一定的练习,这也需要一定的时间,但请放心,如果你确实有一个语句,它就必须跟着一个分号,否则编译器会开始报错。
随着时间的推移,任何编程语言的细微差别最终都会成为司空见惯的事,而Java众所周知的请求和市场上其他编程语言没什么区别。如果你是Java新手,记住这四个小提示,如果你碰到一个编译时错误,看看是不是Java文件的命名方式产生的问题,代码中单词和字母的大小写情况,不匹配的括号和或漏掉分号。保持这四个问题点在你的脑海里将帮助你解决Java代码故障排除问题,并希望减轻一些学习Java程序语言的挫折。
相关推荐
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
Google App Engine for Java 对于目前中国需要学习吗?
-
前无古人后无来者的Java平台
开发人员一直在致力于保持Java的活力,经过20年后,我们感觉从来没有更好的、更令人激动的时刻如同Java社区一样。