• 博客
  • 学院
  • 下载
  • 更多
  • zxy18210943475

java && 和 &、|| 和 | 的区别和作用

原创  2016年12月15日 23:58:22
  • 标签:
  • java
  • 681

我在学java网络编程Socket的时候遇到这么个问题

//这是并发的服务端代码,run是实现Runnable接口的方法

public void run() {
try {
System.out.println(s.getInetAddress().getHostAddress());
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
if (br.readLine().equals("123") && br.readLine().equals("aaa")) { //问题出在这里
pw.println("登录成功");
} else {
pw.println("密码错误");
}
s.shutdownInput();
s.shutdownOutput();
s.close();
} catch (
IOException e) {
e.printStackTrace();
}
}
}

当我开启服务端和客户端时,如果客户端输入的代码是

123

aaa

将返回“登录成功”

如果是

123

abc //输入错误的密码

将返回“密码错误”

但是如果是这样呢

456 //帐号密码都是错的

abc

返回的是“null”

我想了很久,发现问题出在这里:

if (br.readLine().equals("123") && br.readLine().equals("aaa"))

如果使用&&,if的判断可能会只判断一次,也就是“br.readLine.equals("123")”如果为false,那么后面部分的语句将不再执行,而这时候流还没读取完,所以就服务端的getOutputStream没有执行,客户端没收到值,输出自然就为null了

我想到的一个办法就是不使用&&而使用&

即:if (br.readLine().equals("123") & br.readLine().equals("aaa"))

当流在读取时,如果if第一个判断读到false仍然会继续判断,这样流的读取就可以顺利读完,服务端的输出流也可以正常执行了

总结:&& & || 和 | 会影响到判断语句的判断方式,一般来说,常用&& 和 ||

&& :判断时,如果第一个为true,继续判断第二个,第三个... 如果全部为true,结果为true,如果判断过程中一旦遇到false,将停止判断,因为对于判断是否全部为true的&&来说,只要有一个false,那么后续的判断都没有意义

||:它判断时,只要有一个为true,那么他得出的结果就为true,后续的判断也没意义,如果全为false,那么结果为false

& 和 | :它们的判断结果和&&、|| 没有区别,但在执行时有,也就是如果执行到某一部分即使已经得出结果,它们仍然会继续判断,直到所有的判断结束

我认为,在有些时候& 和 | 还是很有用的!

博客 学院 下载 更多 zxy18210943475 java 和 、|| 和 | 的区别和作用相关推荐

  1. 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客

    博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...

  2. Soledad多用途WordPress博客主题下载

    在数字时代,博客已经成为表达个人观点.分享经验和建立品牌的重要工具.无论您是个人博主.创作者还是新闻机构,拥有一个引人注目.功能丰富的博客网站是吸引读者和增强影响力的关键.Soledad多用途Word ...

  3. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode.<数据结构与算法之美>学习笔记.AI ...

  4. echarts实现河南各省市区县地图(河南省各省市区县地图json文件可以在我博客里下载)

    前言:最近公司项目有个需求,展示河南省各省市区县的地图,并展示相应的数据,看了些资料决定用echarts实现. 一.完成之后的效果图 点击市的模块显示对应的市,并显示对应市的数据 点击区县的模块显示对 ...

  5. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM AI 深度/机器学习 opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 LeetCode.<数据结构与算法之美>学习笔记.AI 前端资料学习,vue.js re ...

  6. java博客论坛设计报告,javaweb课程设计报告-个人博客网站的实现(Java).doc

    PAGE 武汉工商学院信息工程学院 项目名称: 个人博客网站的实现(Java) 学生姓名: 学 号: 班 级: 12计科本1 指导教师: 2014年12月23日 目录 TOC \o "1-3 ...

  7. Java项目:朴素风个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 基于vue + Springboo痼J后端分离项目个人博客系统,注册 登录,首页展示,喜爰图书展示,后台图书 ...

  8. Java项目:个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:文章展示.热门文章.文章分类.标签云用户登录评论.匿名评论用户留言.匿名留言评论管理.文章发布.文章管理文章数 ...

  9. Hexo框架+Github Page搭建博客(附下载主题、导出CSDN博客至Hexo博客)

    文章目录 一.Git的下载与安装 二.Nodejs安装 三.安装Hexo 四.初始化Hexo 4.1 hexo init 4.2 配置_config.yml 4.3 hexo s运行 4.4 下载更多 ...

最新文章

  1. 【原创】Cookie应用(二)
  2. 第一门编程语言的选择无关紧要?
  3. 腾讯3366小游戏站算法被破解
  4. js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制
  5. SQL连接查询和嵌套查询详解
  6. git中找回丢失的对象
  7. mysql+5.5.18+linux+下载,mysql5.7.18+linux安装二进制包与运行
  8. 大改革,GNOME 3.x将直接跳到GNOME 40
  9. wordpress函数手册_WordPress主题开发手册
  10. Linux—文件命令之touch命令
  11. Wed Jul 22 00:00:00 CST 2020 java转成指定日期格式的字符串
  12. OverTheWire的bandit游戏(11-20)
  13. 入门vue+springboot项目
  14. 威联通NAS安装openwrt旁路由
  15. 信息安全复习四:置换密码乘积密码隐写术
  16. 服务器 虚拟gpu,云服务器 虚拟gpu
  17. APP支持文件共享设置(iOS)
  18. 读书有益——》关于雪下很大的成语
  19. 秦九邵算法计算多项式(C语言实现)
  20. 关于Java RDP协议实现远程桌面连接的开源项目properjavardp

热门文章

  1. Google源码国内镜像源
  2. 开源python语音识别_python图像识别开源
  3. 复杂网络:平均场方程于动力学微分方程
  4. 发布者(Pbulisher)的编程实现
  5. 太阳能发电板的规格尺寸_多晶太阳能电池板尺寸表
  6. jQuery制作鼠标悬停水平滑动门切换特效仿阿里妈妈联盟广告切换特效
  7. Java的几种定时任务
  8. 新版的THinkServer GPT分区列表安装操作系统
  9. 人工智能在《LOL王者荣耀》游戏中的角色
  10. List中的并集、交集、差集的使用(并阅读源码)