(3)当一个串是另一个的前缀时,长度长的为大。例如:dog
(4)字符串可以从右向左进位,且是字母数字分别进行
(5)自动把操作数转化为字符串。123 lt 45
=> '123' lt '45'
(6)cmp等同于<=>,结果为-1,0,
1
例如:$str1=”a”,$str2=”a“,则print ($str1 cmp $str2)
==> 0
例如:$str1=”a”,$str2=”b”,则print($str1 cmp
$str2)===> -1
例如:$str1=”b”,$str2=”a”,则print($str1 cmp
$str2)===> 1
(7)空串,0,Undef,这三种情况都为假
例如:如下比较的结果
35 != 30+5
#假
35 == 35.0
#真
'35' eq '35.0'
#假(当成字符串来比较)
'fred' lt
'barney' #假
'fred' lt
'free'
#真
'fred' eq "fred"
#真
'fred' eq
"Fred" #假
' ' gt
' ' #真
4)、字符串连接(.)、字符/字符串重复(x)
(1)连接("."),例如:$a=‘a'.'b';
=>‘ab'
在print时可以直接写print $a$b=>print $a.$b;
但是这两者的原理是不一样的
(2)重复("x"),注意:前后有空格(目的:为了和变量名分开)
例如:‘a' x
5=‘aaaaa',若重复次数<1,则返回空串
例如:"5" x 4,即为:"5555"
例如:"love" x
(4+1),即为:"lovelovelovelovelove"
例如:"4.8" x
4,即为:"4.84.84.84.8"
例如:6.1 x
3,即为:"6.16.16.1"
即:左边是一个字符串,右边是该字符串出现的次数
5)、逻辑运算符(&&(and)(与)、||(or)(或)、!(not)(非)、xor(异或)
(1)先算左边的值,后算右边的值
(2)&&和and的优先级不同,但除非特殊情况,很难有区别
6)、位操作运算符
&(按位与)、 |(按位或)、
~(按位非)、 ^(按位异或)、 <<(左移)、>>(右移)
(1)操作数为二进制整数,如果是小数则截取为整数
(2)<<左移,移开后空位补0,值为原数值的2*N倍
(例如:z<<4,则z=z*(2的4次方))
(3)>>右移,首位补0,值为原值一半(并取整)
(例如:z>>4,则z=z/(2的的次方))
7)、赋值运算符
=、+=、-=、*=、/=、%=、**=、&=、|=、^=、.=
(1)$a+=1=>$a=$a+1
(2)可以连等$a=$b=3;=>$a=3;$b=3;
(3)混用
($a=$b)+=3;=>$a=$b;$a=$a+3;(不建议使用)
8)、自增(++)、自减(--)
(1)不要在变量两边都使用此种操作符
++$var--
(2)不要在变量自增/减后在同一表达式中再次使用
$var2 = $var1 + ++$var1;
(3)可用于字符串的自增,当z、Z、9时进位。
$a=‘caz'; $a++; ==> $a=‘cba';
(4)不能用于字符串的自减,当$a--时,按数字运算,字符先转化为0再自减
(5)如果字符串含有非字母数字符号,或数字位于字母中时,自增也先化为0再自增
例如:$a=‘ab*c'; $a++; ==>
$a=1;
例如:$a=‘ab5c'; $a++; ==>
$a=1;
(6)预增$b=++$a,$a先自增再赋值,后增$b=$a++;$a先赋值再自增;反之,同理
例如:$a=1; $b=++$a; =>$a=2,$b=2;
例如:$a=1; $b=$a++; =>$a=2,$b=1;
(7)只能用于单一变量,不能对运算后的变量进行。
例如:($a+$b)++
9)、逗号(相当于:将两条语句写在一行)
适用范围:
只有当两个语句关联紧密时才使用
例如:$a+=1,$b=$a;
=> $a+=1; $b=$a;
例如:$a="ab5c", print
$a."\n";
10)、条件运算符
条件?
真:假
(1)三个操作数:先对条件表达式运算,为真时执行:的左边的运算,为假时执行:的右边的运算
例如:$result = $var == 0 ? 14 :
7;
(2)用于简单的条件
(3)条件表达式用在=的左边
例如:$condvar == 43 ? $var1 :
$var2 = 14;
例如:$condvar == 43 ? $var1 = 14
: $var2 = 14;
1-2 操作符优先级别( precedence--优先级)
当一个表达式中出现几种不同的运算符,哪个先计算,哪个后计算
例如:$condvar == 43 ? $var1 : $var2 =
14;(先算条件,后算赋值)
例如:$x
= $a == $b;(先算关系,后算赋值)
例如:$x
== 0 || $y / $x > 5;(先算除,接着算大于、接着算等于,最后算关系或)
例如:$result = 11 * 2 + 6 ** 2 <<
2;(先算幂,再算乘,接着算加,再接着算左移,最后算赋值)
(1)一般的优先级如下:
自增自减最高,单操作数高于多操作数,数字运算 >
比较运算(数字比较与字符串比较) > 位运算 > 赋值运算 >
逻辑运算
(2)数字运算:幂 >
*/>+-
(3)比较运算:
<(小于)、>(大于)高于(== 与!=)