逻辑运算

关于==、equals和hashCode详解

青春壹個敷衍的年華 提交于 2019-12-02 06:32:57
这几天在尝试手撸一个类似Lombok的注解式代码生成工具,用过Lombok的小伙伴知道,Lombok可以通过注解自动帮我们生产equals()和hashCode()方法,因此我也想实现这个功能,但是随着工作的深入,我发现其实自己对于equals()和hashCode()的理解,也处在一个很低级的阶段。 因此痛定思痛,进行了一番深入学习,才敢来写这篇博客。 文章目录 1、equals在Java中含义 2、hashCode在Java中的作用 3、为什么hashCode和equals要一起重写 4、扩展:实现科学的哈希函数 1、equals在Java中含义 首先要解释清楚这个,equals方法在Java中代表逻辑上的相等,什么叫逻辑上的相等?这个就涉及到Java本身的语法特性。 我们知道,Java中存在着==来判断基本数据类型的相等,但是对于对象,==只能判断内存地址是否相等,也就是说是否是同一个对象: int a = 10000; int b = 10000; // 对于基本数据类型, == 可以判断逻辑上的相等 System.out.println(a == b); Integer objA = 10000; Integer objB = 10000; Integer objA1 = objA; // 对于类实例, == 只能判断是否为同一个实例(可以视为内存地址是否相等)

014运算符

人走茶凉 提交于 2019-12-02 05:17:08
运算符 1、运算符 你可以交互地使用解释器来计算例子中给出的表达式。例如,为了测试表达式2 + 3,使用交互式的带提示符的Python解释器: >>> 2 + 3 5 >>> 3 * 5 15 >>> 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5 得到 8 。 'a' + 'b' 得到 'ab' 。 - 减 得到负数或是一个数减去另一个数 -5.2 得到一个负数。 50 - 24 得到 26 。 * 乘 两个数相乘 或是 返回一个被重复若干次的字符串 2 * 3 得到 6 。 'la' * 3 得到 'lalala' 。 ** 幂 返回x的y次幂 3 \** 4 得到 81 (即 3 * 3 * 3 * 3 ) / 除 x除以y 4 / 3 得到 1.3333333333333333 。 // 取整除 返回商的整数部分 4 // 3 得到 1 % 取模 返回除法的余数 8%3 得到 2 。 -25.5%2.25 得到 1.5 << 左移 把一个数的向左移若干 比特位 (每个数在内存中都表示为比特或二进制数字,即0和1) 2 << 2 得到 8 。—— 2 按比特表示为 10 ,左位移两bit位后得到 1000 ,十进制中表示为 8 。 >> 右移 把一个数的向右移若干 比特位 11 >> 1 得到 5 。—— 11 按比特表示为 1011 ,向右移动1比特后得到

运算符的简单介绍

陌路散爱 提交于 2019-12-02 05:08:30
算术运算符,逻辑运算符,关系运算符 算术运算符: +加法 -减法 *乘法 /除法 %取余(取模) var a = 1, b = 2; a + b = 3 a - b = -1 a * b = 2 a / b = 0.5 a % b = 1 虽然与数学运算很相似,但其中有一些不一样的 var a = "1", b = "2"; a * b = 2 a / b = 0.5 a - b = -1 a + b = 12 // 只有加号不一样,加号有连接的意思; +号,有两层意思,第一层算数之间的加法;第二层字符串的连接;执行过程中,先检测加号两边的数据类型,如果发现字符型,那就先 生效字符的连接 数据类型转换:强制转换(parseFloat,number(),parseInt等等)、隐式转换 赋值运算符: = += -+ *= /+ %= 运算符 例子 等价于 运算结果 = y = 6 y = 6 += y += 1 y = y+1 y = 7 -= y -= 1 y = y-1 y = 5 *= y *= 2 y = y*2 y = 12 /= y /= 2 y = y/2 y = 3 %= y %= 4 y = y%4 y = 2 关系运算符: < <= > >= == != === 运算符 说明 例子 运算结果 == 等于 2 == 3 false === 恒等于(值和类型都要做比较

MySQL运算符

僤鯓⒐⒋嵵緔 提交于 2019-12-02 04:49:50
算术运算符 加 + 减 - 乘 * 除 /或div 取余 %或mod select 1+2; select 4/2; 或 select 4 div 2; select 10%4; 或 select 10 mod 4; 比较运算符 为真返回1, 为假返回0, 不确定返回null =等于 <>,!=不等于 >大于 <小于 >=大于等于 <=小于等于 between在两值之间,相当于>=min&&<=max 例:select 5 between 1 and 10; not between不在两值之间 in在集合中 例:select 5 in(1,2,3,4,5); not in不在集合中 <=>安全等于(1=null和null=null返回null,1<=>null返回0,null<=>null返回1) like模糊匹配 例:select ‘12345’ like ‘12%’;返回1 select ‘12345’ like ‘12_’;返回0 regexp或rlike正则式匹配 例:select ‘beijing’ regexp ‘jing’;返回1 select ‘beijing’ regexp ‘xi’;返回0 is null为空 例:select null is null; 返回1 is not null不为空 逻辑运算符 not,! 逻辑非 and,&&  逻辑与 or,||  

Python 中的运算符

痴心易碎 提交于 2019-12-02 02:59:13
1、算数运算符 + 加 - 减 * 乘    计算字符串重复的次数 print("唯美" * 10) / 除    round(10/3, 4)    4代表位数 // 取整数 % 取余数 ** 幂 2、赋值运算符 =  简单的赋值运算符  a = 100 b = 200 b = a + b   b += a +=  加法赋值运算符 -=  减法赋值运算符 *=  减法赋值运算符 //=  取整数赋值运算符 %=  取模(余数)赋值运算符 **=  幂赋值运算符 /=  除法赋值运算符 3、比较运算符 ==   检查两个操作的值是否相等 如果是,则条件成立,返回 True !=   检查两个操作的值是否不相等 如果是,则条件成立,返回 True > 检查左操作数的值是否 大于 有操作数的值 如果是,则条件成立,返回 True < 检查左操作数的值是否 小于 有操作数的值 如果是,则条件成立,返回 True >= 检查做左操作数的值是否 大于等于 有操作数的值 如果是,则条件成立,返回 True <= 检查做左操作数的值是否 小于等于 有操作数的值 如果是,则条件成立,返回 True 字符串和字符串之间可以比较大小,按照 print("a" > "b") # False print(ord("a")) # 97 # 98 转换为字符串 print(ord("98")) # b 4

运算符的基本概念以及常用Scanner、随机数Random、选择结构的初步了解

十年热恋 提交于 2019-12-01 17:36:55
运算符 分类 算术运算符 位运算符 关系运算符|比较运算符 逻辑运算符 条件运算符 赋值运算符 其中优先级顺序从上到下,可以记忆口诀: 单目乘除位关系,逻辑三目后赋值 操作数: 运算符左右两边的数 表达式: 运算符连接操作数整体叫做表达式 语句: 分号代表语句的结束 单目|一元运算符: 操作数为1个 +号 ++ -- 双目|二元运算符: 操作数为2个 + - * / 三目|三元运算符: 条件运算符 算术运算符 +号: 正号(可省略) 加法运算 字符串的连接 如果+左右两边有字符串的出现"",+就是作为字符串的连接符使用,把两边的内容拼接成为一整个字符串使用 -号: 符号 减法运算 此外,还有* / % % 模以,取模,求余数 ++ -- ++,--操作自己 无论++在前还是在后,自己加一 无论--在前还是在后,自己减一 ++,--操作别人 ++在前,先自己加一在参与运算 ++在后,先参与运算在自己加一 --同理 赋值运算符 基础赋值运算符 = 是java中唯一一个自右向左运算的符号优先级最低 扩展赋值运算符 += a+=b; ==> a=a+b;-=同理 a =b; ==> a=a b; /=、%=同理 推荐使用扩展赋值运算符 优点: 执行效率高 缺点: 不直观 关系运算符 符号:> < >= <= 可以参与运算的类型:byte short int long float

JavaScript运算符

痴心易碎 提交于 2019-12-01 14:03:43
1、一元运算符 ++、--等 需要注意区别:num++、++num 例如计算: var num=1; // console.log(num++ + ++num); //输出4 console.log(num++ + num++); //输出3 2、逻辑运算符(又称布尔运算符) && 两边同为true则为true,否则为false || 两边有一个为true,则为true,否则为false ! 取反 3、比较运算符 '55' == 55 //true '55' === 55 //false 值相等,类型不等 55 === 55 //true 4、赋值运算符和运算符的优先级 来源: https://www.cnblogs.com/xiakecp/p/11689636.html

表达式,运算符和布尔值

此生再无相见时 提交于 2019-12-01 12:15:38
表达式,运算符和布尔值 True ,任意非零数值,非空的字符串,列表,元组或字典都将返回True。 False,0,None,空的列表,元组和字典都将返回False。 布尔表达式从左至右进行求值,而且只有在需要时才会计算右边的操作数。例如表达式a and b,只有当a为True时才会计算b。这有时称为短路求值。 圆括号时明确和改变表达式运算顺序的利器。 一,算术运算符 (1)+ In [2]: [1,2,3]+[4,5,6] 连接两个列表 Out[2]: [1, 2, 3, 4, 5, 6] In [3]: (1,2,3)+(4,) 连接两个元组 Out[3]: (1, 2, 3, 4) In [4]: '1234'+'asdf' 连接两个字符串 Out[4]: '1234asdf' In [5]: True+3 #True=1 Out[5]: 4 (2)* In [6]: False*3 #False=0 Out[6]: 0 In [7]: [1,2,3]*3 Out[7]: [1, 2, 3, 1, 2, 3, 1, 2, 3] In [8]: (1,2,3)*3 Out[8]: (1, 2, 3, 1, 2, 3, 1, 2, 3) In [9]: 'asdf'*3 Out[9]: 'asdfasdfasdf' (3)/ 除 //算术求整商 In [10]: 3/2 Out

03 : Python 运算符

◇◆丶佛笑我妖孽 提交于 2019-12-01 11:45:46
Python 运算符 Python算术运算符 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 / 除 - x除以y b / a 输出结果 2 % 取模 - 返回除法的余数 b % a 输出结果 0 ** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 // 取整除 - 返回商的整数部分( 向下取整 ) >>> 9//24>>> -9//2-5 Python比较运算符 以下假设变量 a为10,变量b为20: 运算符 描述 实例 == 等于 - 比较对象是否相等 (a == b) 返回 False。 != 不等于 - 比较两个对象是否不相等 (a != b) 返回 true. <> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。 > 大于 - 返回x是否大于y (a > b) 返回 False。 < 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 (a < b) 返回 true。 >= 大于等于 - 返回x是否大于等于y。 (a

MySql运算符

蓝咒 提交于 2019-12-01 11:31:33
MySql运算符 MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定。而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据。 1) 算术运算符 执行算术运算,例如:加、减、乘、除等。 2) 比较运算符 包括大于、小于、等于或者不等于,等等。主要用于数值的比较、字符串的匹配等方面。例如:LIKE、IN、BETWEEN AND 和 IS NULL 等都是比较运算符,还包括正则表达式的 REGEXP 也是比较运算符。 3) 逻辑运算符 包括与、或、非和异或等逻辑运算符。其返回值为布尔型,真值(1 或 true)和假值(0 或 false)。 4) 位运算符 包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算必须先将数据转换为二进制,然后在二进制格式下进行操作,运算完成后,将二进制的值转换为原来的类型,返回给用户。 算术运算符 算术运算符 说明 + 加法运算 - 减法运算 * 乘法运算 / 除法运算,返回商 % 求余运算,返回余数 比较运算符 比较运算符 说明 = 等于 < 小于 <= 小于等于 > 大于 >= 大于等于 <=> 安全的等于,不会返回 UNKNOWN <> 或!= 不等于 IS NULL 或 ISNULL 判断一个值是否为 NULL IS NOT NULL 判断一个值是否不为 NULL LEAST