javascript算术运算符有哪些(javascript三目运算符有哪些) 您所在的位置:网站首页 js算术运算 javascript算术运算符有哪些(javascript三目运算符有哪些)

javascript算术运算符有哪些(javascript三目运算符有哪些)

2023-04-04 03:58| 来源: 网络整理| 查看: 265

javascript具有下列种类的运算符:算术运算符;等同运算符与全同运算符;比较运算符; 2、目的分类:字符串运算符;逻辑运算符;逐位运

1、javascript具有下列种类的运算符:算术运算符;等同运算符与全同运算符;比较运算符;2、目的分类:字符串运算符;逻辑运算符;逐位运算符;赋值运算符;3、特殊运算符:条件运算符;typeof运算符;创建对象运算符new;delete运算符;void运算符号;逗号运算符;算术运算符:+ 、 - 、* 、 / 、 % 、 -(一元取反) 、 ++ 、等同运算符与全同运算符:== 、 ===、 !== 、 !===比较运算符:< 、 > 、 =字符串运算符::< 、 > 、 = 、 = 、 +逻辑运算符:&& 、 、 !、赋值运算符:=、 +=、 *=、 -=、 /=规则:一、一定要注意传递给运算符的数据类型和返回的数据类型!不同的运算符都期望它的运算数表达式计算出的结果符合某种数据类型。例如:对字符串是不能进行乘法运算的,"a" * "b" 是不合法的,但是,在可能的情况下,javascript会把表达式转换成正确的类型,因此,表达式 "3" * "5" 是合法的,javascript将字符串转换成数字执行运算,结果返回的是数字15,而不是字符串"15"。二、+ 根据运算数的不同,具有不同的表现:字符串 + 字符串 = 字符串(被连接);"a" + "b" = "ab" "5" + "6" = "11"字符串 + 数字 = (字符串转换成数字)字符串(被连接);"a" + 5 = "a5" 5被转换成字符串 "1" + 0 = "10"数字 + 数字 = 数字(相加)5 + 5 = 10。三、注意运算符的结合性,有些运算符从左到右的结合性;有些从右到左结合性。例如:w = a + b + c 等同于 w = (a + b) + c;w = -b 等同于 w = - ( - ( -b ) ); w = a = b = c 等同于 w= ( a = ( b = c ))一元运算符、赋值运算符、三元运算符的结合性是从右到左的;四、算术运算符规则:“+”:可以进行“加法”与“连接”运算;如果2个运算符中的一个是字符串,javascript就将另一个转换成字符串,然后将2个运算数连接起来。“+”:如果一个运算数是对象,javascript就会将对象转换成数字做加法运算或者字符串做连接运算;“-”“*”“/” 如果2个运算数中的一个是是非数字,则将它转化成数字执行数学运算。“/” 在javascript中,由于所有的数都是浮点数,除法的结果都是浮点数,5 / 2 = 2.5 ;除数为0的结果为正负无穷;0/0为NaN;“%”模运算符:计算第一个运算数对第二个运算数的模,就是第一个运算数被第二个运算数除时,返回余数。如果运算数是非数字的,则转换成数字。“-”一元取反:将运算数取反,如果运算数不是数字,则转化成数字。“++”“”增量运算符/减量运算符号:运算数必须是一个变量、树组的一个元素或对象的一个属性。如果运算数不是数字,则转换成数字。注意:如果“++”位于运算数之前,先对运算数进行增量,然后计算运算数增长后的值。如果“”位于运算数之后,先计算运算数未增长之前的值,然后对运算数增量。例如:i = 1; //赋值给i值1j = ++i; //先将i增量为2,然后将2赋值给j,i的值是2,j的值也是2。i = 1; //赋值给i值1j = i++; //先将i赋值给j,然后对将i值增量到2,i的值是2,j的值是1。减量运算符“”与“++”相同。五、等同运算符与全同运算符:(一)“==”“!==”等同运算符与非等同运算符:比较2个运算数,返回一个不布尔值。比较数值、字符串、布尔值使用的都是量值。当且仅当两个变量存放的值相等的时候,他们才相等。比较对象、数组、函数的时候,使用的是引用,只有2个变量引用的是同一个对象时,他们才是相等的。两个不同的数组是完全不同的,即使他们具有完全相同的元素。对于存放对象、数组、函数的引用的变量来说,只有当他们引用的是同一个对象、数组、函数的时候,他们才相等。

注意!应遵循的原则:当两个运算数的类型不同时:将他们转换成相同的类型,1)一个数字与一个字符串,字符串转换成数字之后,进行比较。2)true转换为1、false转换为0,进行比较。3)一个对象、数组、函数 与 一个数字或字符串,对象、数组、函数转换为原始类型的值,然后进行比较。(先使用valueOf,如果不行就使用toString)4)其他类型的组合不星等。想两个运算数类型相同,或转换成相同类型后:1)2个字符串:同一位置上的字符相等,2个字符串就相同。2)2个数字:2个数字相同,就相同。如果一个是NaN,或两个都是NaN,则不相同。3)2个都是true,或者2个都是false,则想同。4)2个引用的是同一个对象、函数、数组,则他们相等,如果引用的不是同一个对象、函数、数组,则不相同,即使这2个对象、函数、数组可以转换成完全相等的原始值。5)2个null,或者2个都是未定义的,那么他们相等。“!=”非等同运算符:与等同运算符检测的结果相反。(二)“===”“!===”全同运算符与非全同运算符号:全同运算符遵循等同运算符的比较规则,但是它不对运算数进行类型转换,当两个运算数的类型不同时,返回false;只有当两个运算数的类型相同的时候,才遵循等同运算符的比较规则进行比较。“!==”非全同运算符与全同运算符比较的结果相反。如果两个运算数的类型或者值不同的时候,返回true。六、比较运算符:这些比较运算符用于比较不同类型的值,结果返回一个布尔值。“”“=”注意规则:比较的运算数可以是任意类型的,但是只能在数字和运算数上执行。不是数字和字符串的运算数将被转换成数字或字符串。1)如果两个运算数都是数字,或者都可以转换成数字,则按照数字的大小进行比较;2)如果两个运算数都是字符串,或者都可以转换成字符串,则将按照字母顺序进行比较;3)如果字符串遇到数字,则将字符串转换成数字进行比较。4)如果运算数既不能转换成数字,也不能转换成字符串,则返回结果false。七、字符串运算符:并没有专用的字符串运算符,只是有些运算符在遇到字符串运算数的时候,表现不同。(一)“+”连接2个字符串;1)当2个运算数都是字符串的时候,连接起来;2)当其中有一个是数字的时候,将数字转换成字符串,连接起来;(二)“>”这样的比较运算符通过比较确认两个字符串的顺序,比较采用字符的顺序,较小的位于教大的前面,大写字母位于小写字母之前。(三)“+”的作用方法取决于计算顺序,如:s = 1 + 2 +"var" 则:返回结果3var; 因为先计算1+2,然后将结果3转换成字符串与"var"连接;如:s = "var" + 1 + 2 则:返回结果var12; 因为先计算var与1的连接,在将结果var1与转换成字符串的2连接起来。八、逻辑运算符:用于执行布尔运算,常常和比较运算符一起使用,来表示复杂的比较运算。“&&” 逻辑与运算、“”逻辑或运算符、“!”逻辑非运算符(一)“&&”当两个运算数都是布尔值的时候,逻辑与对他们进行and操作,即:当且仅当两个布尔值都是true的时候,返回结果true,否则返回false。注意:实际表现“&&”将检测第一个表达式运算数布尔值,如果第一个运算数表达式返回false,则返回左边第一个运算数表达式的值:false;否则将继续检测第二个即右边的运算数表达式,然后返回第二个运算数表达式的值;例如:if (a = b) stop(); 与 (a = b) && stop(); 等价不赞成使用这个方法,因为运算符右边的代码不能保证会被执行,例如:if ((a < b) && (b++ >>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。

若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。可用下面这个例子检测自己的实现方案:

//: URShift.java

// Test of unsigned right shift

public class URShift {

 public static void main(String[] args) {

int i = -1;

i >>>= 10;

System.out.println(i);

long l = -1;

l >>>= 10;

System.out.println(l);

short s = -1;

s >>>= 10;

System.out.println(s);

byte b = -1;

b >>>= 10;

System.out.println(b);

 }

} ///:~

移位可与等号(=或>>>=)组合使用。此时,运算符左边的值会移动由右边的值指定的位数,再将得到的结果赋回左边的值。

下面这个例子向大家阐示了如何应用涉及“按位”操作的所有运算符,以及它们的效果:

//: BitManipulation.java

// Using the bitwise operators

import java.util.*;

public class BitManipulation {

 public static void main(String[] args) {

Random rand = new Random();

int i = rand.nextInt();

int j = rand.nextInt();

pBinInt("-1", -1);

pBinInt("+1", +1);

int maxpos = 2147483647;

pBinInt("maxpos", maxpos);

int maxneg = -2147483648;

pBinInt("maxneg", maxneg);

pBinInt("i", i);

pBinInt("~i", ~i);

pBinInt("-i", -i);

pBinInt("j", j);

pBinInt("i & j", i & j);

pBinInt("i | j", i | j);

pBinInt("i ^ j", i ^ j);

pBinInt("i > 5", i >> 5);

pBinInt("(~i) >> 5", (~i) >> 5);

pBinInt("i >>> 5", i >>> 5);

pBinInt("(~i) >>> 5", (~i) >>> 5);

long l = rand.nextLong();

long m = rand.nextLong();

pBinLong("-1L", -1L);

pBinLong("+1L", +1L);

long ll = 9223372036854775807L;

pBinLong("maxpos", ll);

long lln = -9223372036854775808L;

pBinLong("maxneg", lln);

pBinLong("l", l);

pBinLong("~l", ~l);

pBinLong("-l", -l);

pBinLong("m", m);

pBinLong("l & m", l & m);

pBinLong("l | m", l | m);

pBinLong("l ^ m", l ^ m);

pBinLong("l > 5", l >> 5);

pBinLong("(~l) >> 5", (~l) >> 5);

pBinLong("l >>> 5", l >>> 5);

pBinLong("(~l) >>> 5", (~l) >>> 5);

 }

 static void pBinInt(String s, int i) {

System.out.println(

 s + ", int: " + i + ", binary: ");

System.out.print("  ");

for(int j = 31; j >=0; j--)

 if(((1 =0; i--)

 if(((1L 5, int: 1846303, binary:

  00000000000111000010110000011111

(~i) >> 5, int: -1846304, binary:

  11111111111000111101001111100000

i >>> 5, int: 1846303, binary:

  00000000000111000010110000011111

(~i) >>> 5, int: 132371424, binary:

  00000111111000111101001111100000

数字的二进制形式表现为“有符号2的补值”。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有