Java新手常犯的几种错误
/**
作者: 慈勤强
描述: 自己在学习过程中遇到的几个典型的问题,写出来,希望对大家有所帮助
Email:cqq1978@Gmail.com
最后修改:2004-10-13
**/
失败是成功之母,这句话用在编程高手身上是再合适不过的了。学习编程没有什么捷径可以走,
在不断的学习和编码的过程中,逐渐的积累经验,从开始的模仿者变成最后的创作者。和学习其它的
编程语言一样,Java新手在开始编码的时候也会出现很多很多的错误,而且有的错误可能也是不断的
出现。当出现这些错误的时候,我们就要仔细的看看错误提示,找出问题所在,避免以后不再发生同样
的错误。在这个过程当中我们的经验和水平也在不断的提升。
Java错误,主要包括两方面,一种是语法错误,另一种是逻辑错误。
语法错误,也就是我们的编码不符合java 规范,在编译的时候无法通过。通常,我们都是用javac
编译我们的源程序,如果代码中存在语法错误,比如某个表达式后缺少分号的时候,编译器就会告诉
我们错误信息,编译就此停止。
逻辑错误,也就是我们常说的Bug,一般存在逻辑错误的程序都是可以顺利的被编译器编译产生
相应的字节码文件,也就是class文件。但是,在执行的时候,也就是java ourClass的时候,得出的结果
并不是我们所希望的。
下面几个问题都是非常常见的错误,在一些新手的代码里面经常会出现的。
1、 Java是分大小写的
对于经常写VB、Asp程序的人来说,一定要注意,变量money和Money是不一样的。
2、一个java源文件可以包含多个class,但是只能包含一个public 的class。
java是面向对象的程序语言,编译完的字节码也是一个一个的类,就是class。一个.java文件可以包含
多个class,在编译的时候,编译器会为每一个class生成相应的class文件。 但是必须要注意,一个.java文件
只能包含一个public class,而且这个public class的类名要与这个.java的文件名一致。
比如,正确的写法应该是下面这样的:
一个java源文件,文件名为 Test.java,内容如下:
class A
{
}
class B
{
}
public class Test
{
}
3、运行java程序时加了.class
运行java程序时,是不需要i加扩展名.class的,比如
c:\javac A.java
c:\java A 而不应该是java A.class
这是因为java默认就是找后缀是class的文件,如果你加了.class,也就是java A.class的话,就会出现 错误:
Exception in thread HelloWorld/class "main" java.lang.NoClassDefFoundError
意思就是找不到这个类,因为java会把A.class当成一个包的写法,就是去A目录下找class这个类,自然
找不到,所以就出错,错误信息和你classpath设置不正确的提示信息是一样的。
4、一个等号和两个等号的不同
在Java程序中,一个等号是赋值操作符,而两个等号则是比较操作符。在 java新手的程序中
经常出现这样的代码:
int a=1;
int b=2;
if(a=b) System.out.println("OK");
这样是不对的,因为if后面需要得到的是一个布尔类型的值,这样编译就会出错。
因为,a=b,是赋值操作,就是把 b的值赋给了a,返回等号右边的值,也就是b的值,比如:
int a=1;
int b=2;
int c=(a=b);
System.out.println("a : "+a);
System.out.println("b: "+b);
System.out.println("c: "+c);
输出结果则是,a等于2,b等于2,c也等于2, 明白了吗?
所以,看看下面这两段代码,如果你明白了,也就说明你已经懂得了一个等号和两个等号的意思了:
boolean a=false;
boolean b=false;
if(a==b)
{
System.out.println("a=b");
}
else
{
System.out.println("a!=b");
}
结果输出“a=b”,如果换成一个等号
boolean a=false;
boolea b=false;
if(a=b)
{
System.out.println("a=b");
}
else
{
System.out.println("a!=b");
}
则输出结果为“a!=b”
5、java中的数组下标是从0开始的
比如我们定义了一个数组
Object[] myArray=new Object[10],说明数组中有10个元素,是从myArray[0]开始,到myArray[9]结束的
在用for循环的时候,需要注意,正确写法如下:
for(int i=0;i<myArray.length;i++)
{
}
6、空引用的错误
这类错误也是最令人头疼的,属于逻辑性错误,编译器可以正常编译,但是在某种情况下执行出错,出错
信息是 java.lang.NullPointerException 。
这是由于在对象的引用没有被初始化的情况下而调用这个对象的属性或者方法而造成的,比如下面的例子:
class A3
{
public static void main(String[] args)
{
String s=null;
int a=1;
int b=2;
if(a<b)
{
s="a<b";
}
System.out.println(s.toString());
}
}
编译和执行都没有错误,可是如果把a的值赋为10,如下:
class A3
{
public static void main(String[] args)
{
String s=null;
int a=10;
int b=2;
if(a<b)
{
s="a<b";
}
System.out.println(s.toString());
}
}
那么就可以正常编译通过,但是执行的时候则出错。
就是因为现在a<b不成立,也就是说没有执行s="a<b"这个初始化语句,所以在输出
s.toString()的时候,对象s其实还是null,没有被初始化,这时候调用.toString()方法
自然会出现异常。
以上就简单写几个java新手经常会出现的错误,其实出现错误并不可怕,只要大家仔细的
分析一下出现的错误,看看究竟是什么原因导致的,如何避免。这样,就会很快的提高
自己的水平,加入到高手的行列中.......
由于自己也是菜鸟水平,所以写的东西,难免出现这样那样的错误,希望大家多提意见。