疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

初学者容易犯的错误


 

        万事开头难,一个Java编程的初学者,常常会遇到各种各样的问题,对于选择培训的学员而言,可以直接通过询问老师来解决这些问题;但对于自学的学员而言,则需要花更多时间、精力来解决这些问题,而且一旦遇到的问题几天都得不到解决,往往会给他们很大的挫败感。
下面将介绍一些初学者经常出现的错误,希望减少读者在学习中的障碍。
CLASSPATH环境变量的问题
        由于历史原因,几乎所有的图书和资料中都介绍必须设置这个环境变量。实际上,正如前面介绍的,如果使用1.5以上版本的JDK,完全可以不用设置这个环境变量。如果不设置这个环境变量,也可以正常编译和运行Java程序。
相反,如果有的读者看过其他Java入门书籍,或者参考过网上的各种资料(网络是一个最大的资源库,但网络上的资料又是最鱼龙混杂、良荞不齐。由于网络上的资料很多都是转载,只要一个人提出一个错误的说法,这个错误的说法可能被成千上万的人转载,从而看到成千上万的错误说法),可能总是习惯设置CLASSPATH环境变量。
设置CLASSPATH环境变量也没有错,关键是设置错了就比较麻烦。正如前面介绍的:如果没有设置CLASSPATH环境变量,Java解释器将会在当前路径搜索Java类,因此在HelloWorld.class文件所在路径运行java HelloWorld将没有任何问题;但如果设置了CLASSPATH环境变量,Java解释器将只在CLASSPATH环境变量所指定的系列路径中搜索Java类,这样就容易出现问题了。
由于很多资料上提到CLASSPATH里应该添加dt.jar和tools.jar两个文件,则很多读者会设置CLASSPATH变量的值为:D:Javajdk1.6.0 03libdt.jar;D:Javajdk1.6:0_03lib ools.jar,这将导致Java解释器不在当前路径下搜索Java类。如果此时在HelloWorld.class文件所在路径运行java Hello World,将出现如下错误提示:
Exception in thread “main”java.lang.NoClassDefFoundErroe:HelloWorld
上面的错误是一个典型错误:找不到类定义的错误,通常都是由CLASSPATH环境变量设置不正确造成的。因此,如果读者要设置CLASSPATH环境变量,一定不要忘记了在CLASSPATH环境变量中增加一点(.),强制Java解释器在当前路径搜索Java类。
注意:如果指定了CLASSPATH环境变量,一定不要忘记了在CLASSPATH环境变量中增加一点(.),一点代表当前路径,用以强制Java解释器在当前路径搜索Java类。
        除此之外,有的读者在设置CLASSPATH环境变量,总是仗着自己记忆很好,往往选择手动输入CLASSPATH环境变量的值,这非常容易引起错误:偶然的手误,或者多一个空格,或者少一个空格都有可能引起错误。
         实际上,我们有更好的方法来解决这个错误,如果按图1.10设置了打开“在地址栏中显示完整路径”和“在标题栏显示完整路径”两个选项,则可以在文件夹的地址栏里看到某个文件或文件夹的完整路径,就可以直接通过复制、粘贴来设置CLASSPATH环境变量。
如果通过资源管理器打开JDK安装路径,将可以看到如图1.11所示的界面:
读者可以通过复制如图1.11所示的地址栏里的字符串来设置环境变量,而不是采用手动输入,从而减少出错的可能。
大小写问题
          前面已经提到:Java语言是严格区分大小写的语言,但由于大部分读者都是Windows操作系统的忠实拥护者,因此对大小写问题往往都不够重视(Linux平台也是区分大小写的),可能造成这样的错误。
例如,有的读者编写的Java程序里的类是HelloWorld,但当他运行Java程序时,则运行的是javahellworld这种形式--这种错误的形式有很多种(对的道路只有一条,但错误的道路则有成千上万条),总之就是java命令后的类名没有严格按Java程序中编写的.
因此必须提醒读者注意:在Java程序里,HelloWorld和helloworld是完全不同的,读者必须严格注意Java程序里大小写问题。
不仅如此,读者按书中所示程序编写Java程序时,必须严格注意Jav。程序中每个单词的大小写,不要随意编写,例如class和Class是不同的两个词,class是正确的,但如果写成Clas,则程序无法编译通过。后面我们会介绍, Java程序里的关键字全部是小写的,无须大写任何字母。
路径里包含空格的问题
        这是一个更容易引起错误的问题,由于Windows系统的很多路径都包含了空格,典型的例如Program Files文件夹,而且这个文件夹是JDK的默认安装路径。
但如果CLASSPATH环境变量里包含的路径包含了空格,则可能引发错误。因此,推荐大家安装JDK以及Java相关程序、工具时,不要安装在包含空格的路径里,否则可能引发错误。
main方法的问题
        如果需要用Java解释器直接运行一个Java类,则这个Java类必须包含main方法,这个main方法必须使用public和static来修饰,必须使用void声明该方法的返回值,而且该方法的形参只能是一个字符串数组,而不能是其他形式的参数。对于这个main方法而言,前面的public和static修饰符的位置可以互换,但其他部分则是固定的。
定义main方法时,不要写成Main方法,如果不小心把方法名的首字母写成了大写,编译时不会出现任何问题,但运行该程序时将引发如下错误提示:
     Exception in thread “main”java.lang.NoSuchMethodError:main
这个错误提示,提示Java解释器找不到main方法,因为Java执行,对于Main方法,Java解释器会把该方法当成一个普通方法,解释器只会选择从main方法开始而不是程序的入口。
main方法里可以放置程序员需要执行的可执行性语句,例如System.out.println("Hello Java!"),这行语句是Java里的输出语句,用于向控制台输出”Hello Java!”这个字符串内容,输出结束后还输出一个换行符。
在Java程序里执行输出有两种简单的方式:System.out.print(需要输出的内容)和System.out.println(需要输出的内容),其中前者在输出结束后,不会换行,而后者在输出结束后还会换行。后面会有关于这两个方法更详细的解释,此处读者只能先把这两个方法记下来.