在初学Java编程的过程中,会经常遇到很多困扰自己很长时间的BUG,现在回过头来看曾经那些BUG的时候,会发现这些BUG其实都很简单,但初学时可能无法很快就能明白问题所在,本文大概讲述下初学Java时经常遇到的一些BUG。
1.用"=="比较引用类型的数据
对于引用类型的数据,"=="比较的是两个数据在内存中的地址,因此用"=="比较两个内容相同的字符串时,依旧会返回false,因为被比较的两个字符串内存地址是不同的,所以返回false,此时应该用equals()进行比较,equals()会比较两个字符串的内容,而不是内存地址。不过对于基本的数据类型,是可以用"=="进行比较的。
2.equals()遇到null
有时候会使用equals()比较两个字符串内容是否相同,比如str1.equals(str2),其中str1和str2是两个字符串,如果str1不为null时,则equals()不会报错,但若str1为null,则equals()会报空指针异常,因此使用equals()时,str1不能为null。str2为null时,equals()不会报错,如果要判断str2是否为空字符串,则可以用"".equals(str2)这样的写法,如果str2有可能为null,则可以这样写:if(str2==null||"".equals(str2))。
3.字符串强转为数值型
有时候会使用Integer.parseInt(str)对内容为整数值的字符串str强制转换为整型,如果str内容是整数值,则Integer.parseInt(str)不会报错,但若str不能完全保证一定是整数值,比如str中包含字母,则Integer.parseInt(str)就会抛出类型转换异常。
4.数组越界
数组时经常会被用到的,比如定义了一个数组arr[10],有10个元素,元素下标分别为0到9,一般会在循环中获取数组元素,但有时候会因为各种原因,导致数组下标越界,此时就会报错。
5.运算异常
有时候会用到加减乘除这样的运算,当使用除法时,需要注意除数不能为零,如果除数为零,运算就会报错。
6.使用size()获取Vector的大小
有时候会用到Vector集合,经常会使用size()获取Vector集合的大小,如果Vector集合是null,则使用size()就会报错。
7.与数据库交互时的Sql错误
从数据库获取数据时,一般会先定义变量存放Sql语句,然后再执行Sql,如果Sql语句比较复杂,可能存在语法错误,但是肉眼无法一眼就能看出来,只有在代码运行时候才会报错,建议可以先把Sql语句放在数据库先执行一遍,以确保Sql语句没有问题。