运算

关系运算

布尔类型

  接着上一篇继续讲布尔类型,下面创建两个布尔类型的变量并输出看下结果:

 public static void main(String[] args) {boolean bool1 = true;boolean bool2 = false;System.out.println(bool1);//trueSystem.out.println(bool2);//false}

  代码中的boolean表示变量bool1和bool2是布尔类型,而且分别初始化值为true和false,从输出结果看,程序没有对boolean类型的值做特殊处理,像int类型一样,直接输出了值本身。
  这里先姑且这样理解,待后续讲到字符串类String后,再来从内部分析。

关系运算

  关系运算是使用关系运算符把两个变量关联起来,作为表达式,输出一个布尔类型的结果。比如比较变量x是否大于变量y,看下面代码:

 public static void main(String[] args) {int x = 5;int y = 6;System.out.println(x > y);//false}

  代码中使用关系运算符>,把x和y两个变量关联起来,输出了一个布尔类型的结果false。含义就是x变量大于y变量是个假命题。这样的关系运算符还有<、>=、<=、==、!=,分别表示小于、大于等于、小于等于、等于、不等于,看下面代码:

 public static void main(String[] args) {int x = 5;int y = 6;System.out.println(x < y);//trueint z = 5;System.out.println(x >= z);//trueSystem.out.println(x <= z);//trueSystem.out.println(x == z);//trueSystem.out.println(x != z);//false}

  输出结果就是x、y、z三个变量各种比较的布尔结果。

逻辑运算

  逻辑运算是使用逻辑运算符把布尔类型的变量关联起来作为表达式,输出一个布尔类型的结果。注意下和关系运算的区别,关系运算并没有规定表达式中变量的类型。
  逻辑运算符这里介绍三个:&&、||、!,分别表示与、或、非。
    在与的关系中,&&两边都是true,结果才是true,否则结果都是false。
    在或的关系中,||两边只要有一个true,结果就是true,否则才是false。
    非比较好理解,非true就是false,非false就是true。
  下面来看代码:

 public static void main(String[] args) {boolean b1 = false;boolean b2 = true;//与System.out.println(b1 && b1);//falserSystem.out.println(b1 && b2);//falserSystem.out.println(b2 && b1);//falserSystem.out.println(b2 && b2);//true//或System.out.println(b1 || b1);//falserSystem.out.println(b1 || b2);//trueSystem.out.println(b2 || b1);//trueSystem.out.println(b2 || b2);//true//非System.out.println(!b1);//trueSystem.out.println(!b2);//falser}

  通过结果再回头看上面讲的三句话,是否更容易理解一些。
  在编辑器中会有4行代码出现黄色的警告信息,不用担心,它暂时不会影响到结果输出,到后续讲到流程控制时会解释为什么会出现警告。
  另外,注意如果参与逻辑运算的是表达式,需要先确定表达式的值,再进行逻辑运算,如下面这个例子:

 public static void main(String[] args) {int x = 5;int y = 6;System.out.println(x > y || y > x);//true}

  代码中先需要确认x>y是false,然后确认y>x是true,最后进行||运算,false||true结果是true。

三元运算

  三元运算有的也叫三目运算,在三元运算的表达式中会有两个结果的备选值,具体输出哪个,由一个布尔表达式来确定。运算符由?和:两部分组成,看下面代码:

 public static void main(String[] args) {//三元运算boolean b1 = false;boolean b2 = true;System.out.println(b1 ? 0 : 1);//1System.out.println(b2 ? 0 : 1);//0}

  分析下结果,布尔类型的变量b1是false,输出了:后面的值1;布尔类型的变量b2是true,输出了:前面的值0。可以简单得出结论:?前的布尔表达式等于true则返回:前的值,等于false则返回:后的值。当然,这样通过结论倒推运算原理的做法不科学,但在入门阶段,可以作为一种理解陌生代码的途径。
  之前讲的内容都比较简单,容易理解,下面我设计了一个稍微复杂一点儿的代码逻辑,来验证下学习成果,看下面代码:

 public static void main(String[] args) {int x = 100;int y = 25;int z = 6;x += y;x /= 20;boolean b1 = x > z ? true : false;System.out.println(b1);int k = 5;int m = 4;int n = 4;boolean b2 = m < -- k || n > k -- ? true : false;System.out.println(b2);}

  根据学习到的知识点,手动运算下,然后对比下程序和手动运算的结果是否一致。
  下面我来一步步分析一下上面这个代码的计算流程。
  先看比较简单的第一部分:
    1.定义了三个int类型的变量x、y、z分别是100、25、6
    2.运算x加y,并把结果值赋给x,此时x是125
    3.运算x除20,并把结果值赋给x,java中int类型的除,没有余数和小数,所以此时x是6
    4.三元运算,判断x是否大于z,因为6大于6是假命题,所以返回:后面的部分false,并复制给b1
  所以第一个输出是false。
  继续看第二部分,这里涉及到一个运算符优先级的问题,一般规律:
    算术运算符>关系运算符>逻辑运算符>赋值运算符
  所以:
    1.定义了三个int类型的变量k、m、n,分别是5、4、4
    2.先执行前减减k,再比较m是否小于k,因为是前减减,所以先执行变量减1再使用,所以此时和m比较的值是4,所以||前半部分的值是false
    3.先执行后减减k,再比较n是否大于k,因为是后减减,所以先使用再执行变量减1,所以此时和n比较的值是4,所以||后半部分的值是false
    4.||两侧都是false,所以最后三元运算布尔表达式的结果是false,返回:后面的值false

Java新手教程从入门到放弃从入门到精通(3)相关推荐

  1. 肺炎在家自学C#--从入门到放弃然后又入门又放弃又入门

    入门到第一次中断 去年的工作太忙,工作知识涉及面又广,大量学习的是管理经验,以及半导体检测设备现场故障处 理.下了班每天学一个小时软件,几个月过后,学习了有一百个小时.就没有然后了. 正如一切自学那样 ...

  2. 《Java从入门到放弃》入门篇:hibernate查询——HQL

    不知不觉又到了hibernate的最后一篇了,只感觉时光飞逝~,岁月如梭~! 转眼之间,我们就···························,好吧,想装个X,结果装不下去了,还是直接开始吧· ...

  3. 【软件测试从入门到放弃】入门阶段:迈入软件测试大门

    引言 本文将讲解软件的概念.软件的生命周期.软件测试方法.软件测试常见模型.软件测试的覆盖率及软件测试规范,一步步带你进入软件测试大门. 一.软件基础 1.1 软件 1 软件的概念 软件是计算机系统中 ...

  4. 百度富文本编辑jsp上传_百度富文本编辑器教程,从入门到放弃

    原标题:百度富文本编辑器教程,从入门到放弃 百度UEditor 资源与项目分离-完全教程 夏老师人真好 又求到一篇技术贴 来来来 继续掏出小本本 什么是百度UEditor? 百度UEditor是一款富 ...

  5. python新手入门到放弃_python萌新:从零基础入门到放弃

    原标题:python萌新:从零基础入门到放弃 不管是在什么领域,自学者都占绝大多数,你说自学可以吗?可以,没问题的,只需要你具备以下几点最基础的能力: 第一点:天赋.对于python而言其实是非常需要 ...

  6. JavaEE 从入门到放弃(一):Java EE 是个什么东西

    为什么选择 Java 想必有很多初学者会像我一样,不知选择什么语言入门.在尝试了 C.C++.C#.Python.PHP 后,我决定把 Java作 为第一门深入学习的编程语言.这个路着实有点长- 不过 ...

  7. java学习教程基础入门及提高,22年最新

    武汉Java编程入门怎么学?希望会对你的学习有所促进和帮助,让大家的Java编程入门.一.Java编程零基础可以学,但自学的确阻力有些大.作为一门技术语言,它所蕴含 接下来就要学习的是Java的面向对 ...

  8. 阿里云 刷新缓存 java_【从入门到放弃-Java】并发编程-NIO-Buffer

    前言 上篇[从入门到放弃-Java]并发编程-NIO-Channel中我们学习到channel是双向通道,数据通过channel在实体(文件.socket)和缓冲区(buffer)中可以双向传输. 本 ...

  9. 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...

    简介 上篇[从入门到放弃-Java]并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全. synchronized是java提供的一种内置的锁机制.通过synchroni ...

最新文章

  1. 一篇文章能够看懂基础代码之CSS
  2. 财报上的云计算战场: 巨头们垄断加剧
  3. 使用Prism提供的类实现WPF MVVM点餐Demo
  4. 基于ESP32模块利用检测线圈检测车模停止时间,室内视觉AI裁判系统
  5. golang if 条件判断语句 简介
  6. MinGW:sjlj vs dwarf vs seh有什么区别?
  7. eclipse使用tomcat进行部署时编译代码不一致的处理
  8. openpyxl写入一行数据_老板让我从几百个Excel中查找数据,我用Python一分钟搞定!...
  9. linux终端下的网页浏览器w3m
  10. AppBuilder(二)UseStageMarker
  11. android最强播放器,MX Player安卓史上最强大的播放器
  12. Linux 服务器时区、时间校准,定时校准脚本
  13. 音响在线测试软件,音响检测:漫步者煲箱软件
  14. MapGIS三维管线建模,唤醒城市地下管线脉搏
  15. 干货! IT信息资产分类与信息分级管理规定
  16. ubuntu下sopcast安装的一点笔记
  17. Vins-Fusion运行kitti,euroc和tum数据集并使用evo评估
  18. 几个问题帮你认识“NIC”----网卡
  19. win7无法自动获取dns服务器地址,Win7无法自动获取DNS与IP地址怎么办
  20. 最实用的chrome插件,助高效开发,加快步伐!

热门文章

  1. php 复制文件夹并压缩到最小_php获取所有文件并压缩
  2. Python中文件路径
  3. GMap2 与 google.maps.Map 的区别
  4. 网络设备(交换机、路由器、集线器)
  5. 超融合详细对比:市面各主流超融合产品及厂商优劣势解密
  6. 03 分布式系统的技术栈
  7. 用两个栈实现最小栈的功能
  8. 群晖服务器主板维修,没那么复杂 群晖DS213j内部拆解
  9. C++strcmp用法
  10. TCPIP卷一(8):EIGRP的组建和邻居状态机