JAVA-初步认识-第三章-比较运算符逻辑运算符

 一. 运算符的种类

先列举所有的运算符类型:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三元运算符。这是对不同的运算进行了分类。

命名为什么叫运算符,英文叫operator, 难道说这是对运算操作的符号化表示?可以找一些英文的原版书籍来看。

本节将讨论比较运算符和逻辑运算符,这些仍旧属于java语言基础。等到讲完语法,函数,和数组之后,才是真正进入java语言的研究。

二. 

在探讨比较运算符之前,先将视频中遇到的一个问题再重新学习一下。这里DOS报的错是没有找到主类,产生这样问题的原因只有两个:java运行的类名写错,类的路径不对。这里重点说明第二个错误。类的路径不对,java一般是在当前路径下运行的class类文件,路径不对,说明我们对路径进行了更改。在DOS中,输入set classpath,控制台将直接显示定义的类路径。这里还要明白一点,系统中本来是没有classpath的,我们为了能在任意目录下,启动某一些class类文件,从而将这些类文件集中放在一个文件夹中,这个文件夹叫classpath,定义了classpath文件路径后,以后在DOS中采用java命令运行类文件都是直接去classpath中去寻找对应名称的文件。

对于classpath知识点,背后也有一些东西值得深思。首先就是设置这个classpath,有永久的,暂时的,借用的。

注意:上面理解的classpath还是有一些,偏差。举例来说明,如果开始在DOS中展示定义了classpath的路径,且DOS窗口一直没关闭,set classpath=d:\source\1,然后在d:\source\01文件夹中编写Demo.java源程序,接着在DOS中编译,和运行,看DOS的检测结果。在DOS中编译源程序时,类文件始终是和源程序在一起的。

最终的结果显示,我们开始编写的源程序是在d:source\01文件夹中的Demo.java,接着DOS进行了编译,编译的Demo.class运行文件和Demo.java源文件是在一个文件夹中的。但是java命令工具在启动class运行文件时,是直接去d:source\1文件中去寻找Demo.class类文件的。这就意味着,set classpath=..... 是要求java工具直接去对应的文件中去搜寻某一类文件,如果没有,就会显示为找不到或无法加载主类。

三. 比较运算符(我觉着比较运算符得到的表达式是条件表达式)

比较运算符是用来进行大小比较的,最终得到的结果是boolean类型的数据,不是true,就是false。

常见的比较运算符大家都知道,大于,小于...这里介绍了一种特殊的比较运算符,等等于或者是相等于。

看下面的两个语句: System.out.println(3=2); System.out.println(3==2); 经过DOS的验证,前一个是错误的,后一个是正确的。

一个=是赋值语句,两个=是比较运算符。→运算符最终会得到一个结果,赋值运算符也是有结果的,但是这里运用错误,将常量赋值给常量,不符合赋值运算符的使用规则。

四. 逻辑运算符

在这里我们又回归到如何学习的问题上来。什么是逻辑?为什么要有逻辑运算符?

逻辑就是一种关系,有这么几种类型,与,或.....。

逻辑运算符的出现是为java语言定制的。在日常生活中,我们可以直接写2<x<5; 但是在java语言中无法这么写,这是两个表达式。为什么不能这么写?因为是两个表达式就不行?视频中的说法就是java不支持这种连写两个表达式的形式,因此构建了逻辑运算符,来连接两个结果为boolean类型的表达式。

五. 逻辑运算符的分类

上面谈论逻辑运算符是连接boolean类型的表达式的,boolean类型就是输出为true或false,这就是逻辑运算。

连接逻辑运算的符号。

逻辑运算有多种,先描述两种,&与,|或,符号比较独特。

&与逻辑运算符的使用:int x=3; System.out.println(x>2&x<5); 在DOS中输出为true。由此可以看出,逻辑运算符连接的是逻辑表达式,输出的也是boolean类型的数据。

这里直接在输出语句中进行逻辑运算,那么可不可以在输出语句的外面进行,然后由输出语句输出呢?结果如下:

而视频中的做法是直接在输出语句中的,截图如下:

这说明输出语句可以直接当成一个计算的场地来用。为什么java要这样设置呢?这么做的原理是什么?

我又补充了一种Java语句,显示如下,ture和false是关键字,逻辑运算符本质上对两个boolean类型的数据进行对比,通过与运算的法则也就是and运算,判断得出结果是true还是false。

 

注意:我们分析上面三种情况,视频中,只讲解了System.out.println(x<5&x>2); 这种情况。在实际的分析中,我觉着这么长的式子,底层有三个步骤。先是对&左右两侧进行判断,得出左右两侧的逻辑运算的结果,ture还是false,然后再对这两个boolean数据进行&运算,最后得出一个结果。写在输出语句外面和里面是没什么区别的,但是如果写成true&true这种形式的话,相当于省去了两个运算,直接进行了第三步。

注意:对于false&false,我按照上面的三种形式写了一下,结果如下,挺有意思:

第一种,在输出语句外面定义好了,最后用输出语句直接输出,DOS显示运行正常。

第二种,在输出语句内直接进行运算,DOS报错。这说明底层在第一种和第二种形式下,进行的运算是不一样的。为什么在这种情况下DOS会报错?我又换了一个输出语句,在int a=3; System.out.println(x<1&x>2);按道理来说这是false&true的形式,但是DOS依旧报错。但是,当我在输出语句中直接书写System.out.println(true&false);DOS结果显示能够正常运行。这就很奇怪,背后的机制是什么?难道说输出语句中如果直接进行计算的话,&运算的两边必须给定是正确的,不然就报错,那么就给定boolean数据,这就不会管。→上面的说法完全是错误的,说不通,仔细地观察下面的截图,我们发现,前后变量写错了,定义时写的是a,但是在输出语句中写的是x,这就导致DOS报错为找不到x。

在这里,我突然理解了那句话,计算机是帮助人们运算的工具。我们通过学习这些高级计算机语言,来编写一些程序。这些程序完全就是将人们日常生活中的计算思路全部化为代码,利用这些程序代替人们来进行计算,乃至于超越人们的计算能力。

五. |或运算符

对于|运算符,按照上面&运算符的形式,不在做更多的讲解。

这里再插一句话,计算机高级语言就是一种极端符号化的集合体,将所用到的各种东西各种符号化,比如这里所讲的各种逻辑运算,都要将其符号化,并且利用键盘上原有的符号,诸如:%,^,&....来代表。

 

posted @ 2017-09-02 09:38  前锋营  阅读(793)  评论(0编辑  收藏  举报