编译时Java最常见的错误

简介:

学习一种新的编程语言总是一种挑战,因为简单的失误就可以产生错误,对于门外汉来说都是神秘和充满困惑的。如果你不是足够幸运有一个有经验的程序员在旁边看着你并提供指导,排除你代码的故障将是非常令人沮丧的。

   如果你正学习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.7\bin>Javac Game.Java
    Game.Java:3: error: ';' expected
    Public Static Void main (String args[]) {
    1 error

   错误匹配的括号--你可以看到你的代码中的每一个开着的括弧,它可能是一个方括号,大括弧或圆括号,你需要一个与之匹配的关闭的括弧。有时,一个程序员 会忘记关闭方法的括弧,或者他们会记得关闭一个方法的括弧,但是忘记关闭类的括弧。不管它是如何发生的,如果括号不匹配,你将会一直得到一个编译时错误。

  例如,一个Java类的最后一个大括弧不关闭,试图编译代码将产生下列编译时错误:

  C:\_jdk1.7\bin>Javac Game.Java

  Game.Java:11: error: reached end of file while parsing

  }

  1 error

   就我个人而言,每当我创建一个新的方法或类时,在敲入开始的括弧之后,我总是敲一些回车,然后添加一个结束的封闭括号。我只有在括号匹配的情况下我才会 开始类主体或方法的代码编码。这样,你的括号会总是匹配状态,你样就可以在编写类或者方法代码时,不用担心将来的某个时刻需要关闭括号。

  漏掉分号--人们越来越熟悉的Java另一个常见编码错误是漏掉需要的分号。作为一项规则,每一个语句必须以分号结束。不幸的是,这个规则有时可能会像它的作用一样另人费解,尤其是当你有一个很难弄清楚它到底是不是一个语句的时候。

  例如,在一个方法的主体里面,所有的“system.out.print”调用都以分号结束。如果我们在一个方法体中忘记给“system.out”加上分号,我们将会得到一个编译时错误消息,就像下面一样:

C:\_jdk1.7\bin>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程序语言的挫折。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
4月前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
337 5
|
4月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
81 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
4月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
76 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
5月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
129 2
|
5月前
|
IDE Java 编译器
lombok编译遇到“找不到符号的问题”
【9月更文挑战第18天】当使用 Lombok 遇到 “找不到符号” 的问题时,可能是由于 Lombok 未正确安装、编译器不支持、IDE 配置不当或项目构建工具配置错误。解决方法包括确认 Lombok 安装、编译器支持,配置 IDE 和检查构建工具配置。通过这些步骤通常可解决问题,若问题仍存在,建议检查项目配置和依赖,或查看日志获取更多信息。
2479 2
|
6月前
|
存储 安全 Java
深入探讨Java的分层编译
本文主要探讨Java虚拟机(JVM)中的分层编译(Tiered Compilation)机制及其对程序性能的影响。
|
6月前
|
存储 Java 编译器
|
6月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
897 1
|
7月前
|
Java 测试技术 Maven
Java编译器注解运行和自动生成代码问题之在编译时需要设置-proc:none参数问题如何解决
Java编译器注解运行和自动生成代码问题之在编译时需要设置-proc:none参数问题如何解决
|
7月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决

热门文章

最新文章