数组
首先来看这个案例:
String sz[]=new String[8];
if(sz!=null){
System.out.println("hahah1");
}
String szz[]=null;
if(szz!=null){
System.out.println("wwww");
}
执行结果是:
hahah1
注意:
如果给定数组长度,那么这个数组里面即使没有值,也不为空;因为这个数组里面包含了8个元素,及时每个元素的值是null;
总结:
如果是初始化了的数组肯定不为空,即使它里面什么东西都没有,如果你想判断里面是否赋值了,用if(sz!=null){}肯定不对;
而是用sz[0].equals("")||sz[0]==null来进行判断;
如果仅仅是String [] sz=null;用if(sz!=null){}是可行的,
一般情况下,是不能先String [] sz=null;sz[0]="1";
会报错,空指针异常,因为你没有给元素分配地址;
字符串
字符串判断是否为空,一般都是if(str!=null&&"".equals(str)){}
但是如果判断两个字符串不相等?
那么就是
if(str1!=str2&&!(str1.equals(str2))){}
以上我都知道,可是我还是在栽跟头了,原因是,多个判断不等的条件:
案例:
查询数据库里number='0065'的最后一条记录,把即将插入编号'0065'的记录和上一条记录相比,如果第二列、第三列、第四列
第五列、第六列发生了变化,就执行插入操作;
也就是说,只要存在着以上某一列(最后一条记录和即将插入的记录)不相等的话,就执行插入操作;
我的相关代码如下:
if(!(szz[1].equals(szs[1]))||szs[5].equals("255")||(!(szs[2].equals("255"))
||!(szs[2].equals("0")))||(!(szs[3].equals("255"))||!(szs[3].equals("0")))){
//满足以上条件之一才可以插入数据库中
String sql1= "insert into sen(number,bs,xl,lpower,upower,alarm,data,time,state) values(?,?,?,?,?,?,?,?,?)";
Tools.update(sql1, szs);
}
但是在实践过程中没有起到筛选的作用,也不知道哪里出了问题?
对于多个条件写在一起的,最好的办法,是把每个条件都配一个if
if(szs[5].equals("255")){
System.out.println("2");
}
if(!(szs[2].equals("255"))){
System.out.println("3");
}
if(!(szs[2].equals("0"))){
System.out.println("4");
}
if(!(szs[3].equals("255"))){
System.out.println("5");
}
if(!(szs[3].equals("0"))){
System.out.println("6");
}
执行程序就可以看出哪里有问题;
找到问题以后修改自己的代码如下:
if(!(szz[1].equals(szs[1]))||szs[5].equals("255")||(!(szs[2].equals("255"))&&!(szs[2].equals("0")))||(!(szs[3].equals("255"))&&!(szs[3].equals("0")))){
//满足以上条件之一才可以插入数据库中
String sql1= "insert into sen(number,bs,xl,lpower,upower,alarm,data,time,state) values(?,?,?,?,?,?,?,?,?)";
Tools.update(sql1, szs);
}