关系运算符<,<=,>,>=用于对字符串的比较

对两个字符串运用关系运算符,许多人认为小于表示“在字母顺序上靠前”,大于表示“在字母顺序上靠后”,但是事实并非如此。对于字符串,第一个字符串中的每个字符的代码都会和第二个字符串中对应位置上的字符的代码进行比较。完成这种比较操作后,会返回一个Boolean值。问题在于大写字母的代码都小于小写字母的代码,这就意味着可能会遇到下面这种情况:

var bResult = "Brick" < "alpha";

alert(bResult);// output:true;

在这个例子中,字符串“Brick”小于字符串“alpha”,因为字母B的字符代码是66,字母a的字符代码是97。要强制得到按照字母顺序比较得到的结果,必须把两个运算数转换成相同的大小写形式(全大写或者全小写)然后在尽行比较。例如:

var bResult = "Brick".toLowerCase() < "alpha".toLowerCase();

alert(bResult);// output:false;

另一种棘手的情况发生在比较两个字符串形式的数字的时候,例如:

var bResult= "23" < "3";

alert(bResult);//output:true;

因为这两个运算时都是字符串,因此将比较他们的字符代码(”2“的字符代码是50;”3“的字符代码是51)因此输出true;

不过把上述例子中的其中一个运算符改为数字的时候,那么就有趣了,例如:

var bResult= "23" < 3;

alert(bResult);//output:false;

如论合适比较一个字符串数字和一个数字,ECMAscript都会把字符串的数字转化为数字,然后在比较大小。

不过,如果字符串不能被转化成数字的时候,又该怎么办呢?

var bResult= "a" < 3;

alert(bResult);//output:false;

字母a不能换转成有意义的数字,不过调用parseInt()方法,返回的是NaN,根据规则,任何包含NaN的关系运算都要返回false,因此这段代码也输出false;

var bResult= "a" < 3;

alert(bResult);//output:false;

通常,如果小于运算的两个值返回false,那么大于等于运算必须返回true;不过如果某个数字是NaN,则情况并非如此。

时间: 2024-10-27 08:57:26

关系运算符<,<=,>,>=用于对字符串的比较的相关文章

JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * 这里需要注意 a++ 和 ++a 的区别,后面说; */ /* public class Javase{ public static void main(String[] args){ int a = 10; int b = 20; int c = 30; System.out.println( a

javascript运算符——关系运算符

× 目录 [1]恒等 [2]相等 [3]大于[4]小于 前面的话 关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或false,关系表达式总是返回一个布尔值,通常在if.while或for语句中使用关系表达式,用以控制程序的执行流程 javascript提供了===.!==.==.!=.<.<=.>.>=8个关系运算符,本文将分为4类介绍关系运算符 恒等运算符 恒等运算符'===',也叫严格相等运算符,首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转

运算符_关系运算符

四.关系运算符:用于进行比较的运算符称作为关系运算符:小于(<).大于(>).小于等于(<=).大于等于(>=).相等(==).不等(!=).全等(恒等)(===).不全等(不恒等)(!==) 和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:1.两个操作数都是数值,则数值比较:2.两个操作数都是字符串,则比较两个字符串对应的字符编码值:3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较:4.两个操作数有一个是对象,则先调用 valueOf()方法或 toSt

js之运算符(关系运算符)

关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或者是false.关系表达式总是返回一个布尔值. 具有如下8个关系运算符:大于(>),小于(<),小于等于(<=),大于等于(>=),相等(==),不等(!=),恒等(===),不全等(!==).从下面几个方面来分析: 一.相等和不相等运算符 “===”:恒等运算符,也称是严格相等运算符,只有在无需类型转换运算数就相等的情况下才为true. <script> console.log('2' === 2);

【Shell脚本学习10】Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. 例如,两个数相加: #!/bin/bash val=`expr 2 + 2` echo "Total value : $val" 运行脚本输出: Total value : 4 两点注意: 表达式和运算符之间要有空格,

shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符

shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符 1,算术运算符 原声bash 不支持简单的算术运算,可以使用expr 工具 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样. 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边. #!/bin/basha=10b=20rst=`expr 2 + 2`echo '2+2 =' ${rst} rst=`exp

C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

一.数值类型及其调用原理 名称 说明 所占字节 范围 byte 字节型 1 -27~27-1 short 短整型 2 -215~215-1 int 整型 4 -231~231-1 long 长整型 8 -263~263-1 char 字符型 1 0~65535 float 单精度型 4 ±1.5*10-45~±3.4*1038 double 双精度型 8 ±5.0*10-324~±1.7*10308 bool 布尔型 1 只有true和false两个值 static void Main(stri

Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. 原生的bash到底支持不支持数学计算我不清楚了,不过也这样做到一样的效果: #!/bin/bash val=$(( 2 + 2)) echo 'Total value :'$val val=$[ 2 + 2 ] echo 'Total value :'$val 我想现在版本的bash原生是支

17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

一.数值类型及其调用原理 名称 说明 所占字节 范围 byte 字节型 1 -27~27-1 short 短整型 2 -215~215-1 int 整型 4 -231~231-1 long 长整型 8 -263~263-1 char 字符型 1 0~65535 float 单精度型 4 ±1.5*10-45~±3.4*1038 double 双精度型 8 ±5.0*10-324~±1.7*10308 bool 布尔型 1 只有true和false两个值 static void Main(stri