list!=null和list.size()>0的区别

声明转载自:https://blog.csdn.net/iblade/article/details/50506398/

 

前提说明:

1、list==null,意味着list压根没有地址,在堆内存压根不存在;

2、list.size()=0,意味着堆内有list,但是还没来得及放元素,其长度随着元素数量变化而变化,暂时为0;

3、list如果为null,则说明list还未初始化。此时list调用任何方法都会出现抛出空指针异常。list.size()==0,则说明list已经被new过了,但是里面没有值;

 

二者区别:

1、list != null,有没有瓶子(有瓶子);

2、list.isEmpty(),瓶子里有没有水(前提是瓶子已经存在,若直接判断水,则会抛出NullPointerException异常);

3、list.add(null),会造成list.isEmpty() == false,list.size() == 1,因此代码中要注意此处缺陷;

 

与现实世界做一个形象比喻:

我有一个空的水杯(list),而你没有(null);

我的size是0;

你想要装水去买个水杯(new ArrayList();),而我可以直接装水(list.add(water));

若你没有杯子(list),直接倒水(water),水就会流出来(NullPointerException);

因此判断list时,经常连用list != null && list.size > 0或者list != null && lisy.size != 0。

 

附上测试验证代码:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package dao.imp; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import common.Pager; import dao.BaseDao; import dao.UserDao; import entity.User; public class UserDaoImpl extends BaseDao implements UserDao { //根据SQL查询所有用户信息 public List<User> getusersBySql(String sql,Object...args){ List<User> list = new ArrayList<User>(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConn(); pstmt = conn.prepareStatement(sql); if(args!=null&&args.length>0){ for(int i = 0;i<args.length;i++){ pstmt.setObject(i+1, args[i]); } } rs = pstmt.executeQuery(); while(rs.next()){ User user = new User(); user.setUserno(rs.getInt("USERNO")); user.setUsername(rs.getString("USERNAME")); user.setSex(rs.getString("SEX")); user.setAge(rs.getInt("AGE")); user.setTellphone(rs.getString("TELLPHONE")); user.setAddress(rs.getString("ADDRESS")); user.setPermission(rs.getInt("permission")); user.setPassword(rs.getString("password")); list.add(user); } } catch (Exception e) { e.printStackTrace(); }finally{ closeAll(rs, pstmt, conn); }return list; } //分页查询用户 public List<User> getUsersByPager(Pager pager,User condition){ String conditionSql = ""; String sql = "select * from (select t1.*,rownum rn from userinfo t1 where rownum<=?"; if (condition.getUsername()!=null&&!condition.getUsername().trim().equals("")) { conditionSql="and username like '%"+condition.getUsername()+"%'"; } sql+=conditionSql; sql+=") where rn>?"; List<User> list = getusersBySql(sql, pager.getCurrentPage()*pager.getPageSize(), (pager.getCurrentPage()-1)*pager.getPageSize()); String countSql = "select count(*) from userinfo where 1=1"+conditionSql; pager.setTotalCount(getUserCount(countSql)); return list; } //查询条数 public int getUserCount(String sql){ int count = 0; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConn(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){ count = rs.getInt(1); } } catch (Exception e) { e.printStackTrace(); }finally{ closeAll(rs, pstmt, conn); } return count; } //查询所有用户信息 public List<User> getAllUsers(){ String sql = "select * from userinfo"; return getusersBySql(sql); } //根据用户名查询 public User getUserByUsernameandP(String username,String password){ String sql = "select * from userinfo where username = ? and password=?"; List<User> list = getusersBySql(sql, username,password); return list != null && list.size()>0 ? list.get(0) : null; } //根据编号查询 public User getUserByUserno(int userno){ String sql = "select * from userinfo where userno = ?"; List<User> list = getusersBySql(sql, userno); return list != null && list.size()>0 ? list.get(0) : null; } public List<User> getUserByUserno1(int userno){ String sql = "select * from userinfo where userno = ?"; List<User> list = getusersBySql(sql, userno); return list; } //增加 public int addUser(User user){ String sql = "insert into userinfo values(seq_user.nextval,?,?,?,?,?,?,?)"; return super.executeSql(sql,user.getUsername(),user.getSex(),user.getAge(),user.getTellphone(),user.getAddress(),user.getPermission(),user.getPassword()); } //修改 public int updateUser(User user){ String sql = "update userinfo set username=?,sex=?,age=?,tellphone=?,address=?,permission=? ,password=? where userno=?"; return super.executeSql(sql, user.getUsername(),user.getSex(),user.getAge(),user.getTellphone(),user.getAddress(),user.getPermission(),user.getPassword(),user.getUserno()); } //删除 public int deleteUser(String username){ String sql = "delete from userinfo where username=?"; return super.executeSql(sql, username); } public int deleteUser(int userno){ String sql = "delete from userinfo where userno=?"; return super.executeSql(sql, userno); } public int updatePassword(String password,String username){ String sql="update userinfo set password=? where username=?"; return super.executeSql(sql, password,username); } public User getUserByUsername(String username){ String sql="select * from userinfo where username=?"; List<User> list=getusersBySql(sql, username); return list != null && list.size()>0 ? list.get(0) : null; } public List<User> getUserByUsername1(String username){ String sql="select * from userinfo where username=?"; List<User> list=getusersBySql(sql, username); return list; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值