java,ruby,mysql 数据类型 运算符 对照学习笔记

数据类型

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中的逻辑运算符& 、&& 、| 、||、!、^

赋值运算符

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? 判断传递的表达式是否已定义

猜你喜欢

转载自blog.csdn.net/weixin_37646636/article/details/121185185