在Java程序中,类是其实现功能的核心。如果说开发Java应用程序,就是一个类的构建与使用的过程这一点都不为过。可惜的是,不少程序员在编写类的时候,还是会犯一些常规的错误。笔者就对此做一个总结,望各位读者能够引起重视。
一、基本数据类型的初始化问题。
在Java语言中,跟其他开发语言一样,都定义了一些基本的数据类型。程序员可以拿来直接使用,还可以用来构造其他一些复杂的应用程序。不过在Java中使用这些基本数据类型有些不同。在Java语言中,这个基本数据类型主要用在两个地方,分别为类中的成员或者局部变量。对于这些基本的数据类型,常犯的错误就是没有进行初始化。
如果将某些变量是属于这些基本数据类型的,当他们作为一个类的成员使用时,默认情况下编译器会给其一个默认值。以保证那些是基本类型的成员变量得到初始化,防止产生程序的错误。但是,这些默认的初始值大部分情况下可能都不符合程序员的需要,可能是不准确的,也可能是不合法的。为此笔者的建议是,开发人员要养成一个好习惯,在定义变量的时候(用于类成员),就最好明确的对变量进行初始化。另外需要注意的是,跟C++等编程语言相比,Java在这方面有了很不错的改善。如如果开发人员忘记对其进行初始化,Java至少还会采用默认值对其进行初始化,来防止程序错误。但是在C++中,则不会对其进行自动初始化。在这种情况下,由于变量没有及时初始化,而很容易出现程序的崩溃。
基本类型的另外一种用途就是当作局部变量来使用,如在循环语句中当作循环条件来使用。此时跟类成员不同,系统不会自动对局部变量进行初始化。很多程序开发员会在这里栽跟头。因为在类成员中会对其进行自动初始化,而在局部变量也如此。其实不然。当利用int y 等语句定义了一个局部变量时,Java跟其他开发语言一样,是不会对其进行自动初始化的。开发人员需要在定义变量时就对其进行初始化,这是笔者强烈建议的。如果在代码编译的时候,局部变量没有被正确的初始化,则系统编译器就会返回一个错误信息,告诉开发人员某个局部变量没有被正确的初始化,便以不会成功。在这方面,Java跟其他语言也有所不同。如在C++中,如果变量没有初始化,那么系统只是抛出一个警告信息,便以仍然可以正常进行。这无疑后以后程序运行埋下了一颗定时炸弹。为此笔者认为,Java这种做法是比较安全的。当局部变量没有初始化时,系统会拒绝进行编译,而不是简单的只是一个警告信息。有时候,警告信息并不能够引起程序开发人员的重视。
总之,基本数据类型无论是作为类成员变量来使用,还是作为局部变量来使用,程序开发人员都要养成一个好习惯,即在变量定义的时候马上进行初始化。即使不知道还赋予什么值合适,那么最好也是手工的赋予其一个默认值。等到变量使用时,在根据实际情况给其重新赋值。无论什么情况下,变量一定以就要对其进行初始化。