数据类型
java | 字节 | Ruby | 字节 | mysql | 字节 |
---|---|---|---|---|---|
byte | 1 | ||||
short | 2 | ||||
int | 4 | Integer->fixnum(普通整数) | <=4 | tinyint | 1 |
Integer->bignum(大整数) | >4 | smallint | 2 | ||
mediumint | 3 | ||||
int/integer | 4 | ||||
bigint | 8 | ||||
long | 8 | ||||
float | 4 | float | float | 4 | |
rational(有理数) | |||||
complex(无理数) | |||||
double | 8 | double | 8 | ||
decimal | |||||
boolean | 1(位) | true / false 伪变量 | |||
char | 2 | ||||
数组 | 数组 | ||||
对象 | 对象 | ||||
null | nil | null | |||
哈希类型 | |||||
范围类型 | |||||
字符串 | 字符串 | char | |||
varcha | |||||
binary | |||||
varbinary | |||||
tinyblob | |||||
blob | |||||
mediumblob | |||||
longblob | |||||
tinytext | |||||
text | |||||
medinutext | |||||
longtext |
算数运算符
java | ruby | mysql | |||
---|---|---|---|---|---|
+ | + | + | |||
- | - | - | |||
* | * | * | |||
/ | 1/2=0 1.0/2=0.5 1/2.0=0.5 |
/ | / DIV(1,2) |
1/2=0.5 1 DIV 2=0 1.0 DIV 2=0 3 DIV 2=1 3.9 DIV 2=1 8 DIV 3=2 |
|
% | 1%2=1 1.9%2 |
% | % MOD(1,2) |
1%2=1 MOD(1,2)=1 1.9%2=1.9 MOD(1.9,2)=1.9 |
|
++ | |||||
– | |||||
** | 指数 | ||||
注意: | |||||
byte short char -> int 先数值提升到int 再运算 不同类型运算先数值提升再运算 低到高自动提升,高到低需强转 |
|||||
1/0 | java.lang.ArithmeticException: / by zero | 1/0 | NULl | ||
100%0 | java.lang.ArithmeticException: / by zero | 100%0 | NULL |
位运算符
java | ruby | mysql | |||
---|---|---|---|---|---|
& | & | ||||
| | | | ||||
~ | ~ | ||||
^ | ^ | ||||
>> | >> | ||||
<< | << | ||||
>>> |
关系运算符
java | ruby | mysql | |||
---|---|---|---|---|---|
> | > | > | |||
>= | >= | >= | |||
< | < | < | |||
<= | java 里只能单字符; ‘bdf’<=‘b’ 报错 字符串比较用compareTo 和equals |
<= | <= | ‘bdf’<=‘b’ ->0 ’b’<=‘b’ ->1 0<1 ->1; |
|
== | 1=0 ->true 1=1 ->false NULL=NULL ->true |
== | = | 1=0 ->1 1=1 ->0 NULL=NULL ->NUll |
|
!= | 1!=0 ->true 1!=1 ->false null !=null->false |
!= | <> / != | 1<>0 ->1 1<>1->0 null<>null->null |
|
<=> | a<=>b a>b = 1 a=b = 0 a<b = -1 |
<=> “<=>”运算符,和“=”类似,在操作数相等时值为 1,不同之处在于即使操作的值为NULL也可以正确比较 |
1<=>1->1 2<=>0 ->0 0<=>0 ->1 NULL<=>NULL ->1 |
||
=== | 左边是数值或者字符串时,=与的意义是一样的 ===还可以与=~一样来判断正则表达式是否匹配 判断右边的对象是否属于左边的类等 |
||||
.eql? | 具有相同的类型和相等的值 1 == 1.0 返回 true 1**.eql?**(1.0) 返回 false |
||||
equal? | 具有相同的对象 id 如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 true, a**.equal?bObj 返回 false,但是 a.equal?**aObj 返回 true |
||||
between | 10 between 10 and 20 ->1 20 between 10 and 20->1 9 between 10 and 20->0 21 between 10 and 20->0 |
||||
in | 1 in (1,2,3) ->1 ‘t’ in (‘t’,‘a’,‘b’,‘l’,‘e’) ->1 0 in (1,2) ->0 |
||||
is null | null is null ->1 0 is null ->0 |
||||
is not null | 0 is not null ->1 null is not null ->0 |
||||
like | 123456 like ‘123%’ ->1 123456 like ‘%123%’ ->1 123456 like ‘%321%’ ->0 |
||||
regexp / rlike 使用格式为“str REGEXP str_pat”,当 str字符串中含有 str_pat相匹配的字符串时,则返回值为1,否则返回0。 |
‘abcdef’ regexp ‘ab’ ->1 ’abcdefg’ regexp ‘k’ ->0 |
||||
注意 | |||||
比较运算符可以用于比较数字、字符串和表达式。 数字作为浮点数比较,而字符串以不区分大小写的方式进行比较 |
逻辑运算符
java | ruby | mysql | |||
---|---|---|---|---|---|
&& | 短路与 | and / && | and / && 操作数中有任何一个为NULL则返回值为NULL |
(1 and 1) -> 1 (0 and 1) -> 0 (3 and 1 ) -> 1 (1 and null) -> NULL |
|
|| | 短路或 | or / || | or / || 当有一个操作数为NULL时,如另一个操作数为非零值,则结果为1,否则结果为NULL。 假如两个操作数均为NULL,则所得结果为NULL, |
(1 or 0) -> 1 (0 or 0) -> 0 (1 or null) -> 1 (0 or null) -> null (null or null) -> null |
|
^ | xor 当任意一个操作数为NULL时,返回值为NULL。 对于非NULL的操作数,如果两个的逻辑真假值相异,则返回结果1,否则返回0 |
1 xor 1 -> 0 0 xor 0 -> 0 1 xor 0 -> 1 null xor 0 -> NULL null xor 1 -> NULL |
|||
! | not / ! | not / ! NOT NULL的返回值为NULL |
not 0 -> 1 not 1 -> 0 not null -> Null |
||
& | |||||
| |
赋值运算符
java | ruby | mysql | |||
---|---|---|---|---|---|
= | = | ||||
+= | += | ||||
-= | -= | ||||
*= | *= | ||||
/= | /= | ||||
%= | %= | ||||
&= | |||||
|= | |||||
^= | |||||
<<= | |||||
>>= | |||||
>>>= | |||||
**= |
其他运算符
java | 说明 | ruby | 说明 | mysql | 说明 |
---|---|---|---|---|---|
三元运算符 | 三元运算符 | ||||
?: | ?: | ||||
数组运算符 | 数组运算符 | ||||
[] | [] | ||||
点运算符"." | 点运算符"." | ||||
. | . | 通过 类.方法名 / 模块名.方法名 来调用类或模块中的方法 | |||
双冒号运算符 “::”** | |||||
:: | 1.在类或模块内定义常量、实例方法和类方法,可以从类或模块外的任何地方进行访问 2.在 Ruby 中,类和方法也可以被当作常量; 3.类 :: 常量 / 模块名称 :: 常量 3.在表达式的常量名前加上 :: 前缀,即可返回适当的类或模块对象 4.如果 :: 前的表达式为类或模块名称,则返回该类或模块内对应的常量值;如果 :: 前未没有前缀表达式,则返回主Object类中对应的常量值 |
||||
字符串配合+运算符 | |||||
“aa”+5 -> “aa5” | |||||
范围运算符 | |||||
… | 1…10 创建从 1 到 10 的范围 | ||||
… | 1…10 创建从 1 到 9 的范围 | ||||
defined? 运算符 | |||||
defined? | 判断传递的表达式是否已定义 |