在各个语言中都会设及到我们的数据操作运算,无论是java还是其他语言中。操作符主要包含算术操作符,位操作符,比较运算符,逻辑运算符,关系运算符。我们使用操作符就是为了帮助我们进行运算的操作的流程。

我们在程序中使用是比较的多的对于操作符,所以我们需要好好的了解一些操作符这个知识点,下面我们将进行具体的介绍:

操作符:

运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。其中java编程思想中对操作符包含以下几个方面:

从上图操作符的所包含的各个操作符的功能。下面我们看下我们常用的几个,和所注意点。

对于自动递增和自动递减操作符:

通常包含前缀式(++i)和后缀式(i++)

“前缀递增"表示”++“的操作位于变量或表达式的前面;而“后缀递增”表示操作符在表达式的后面。对于前缀递增,和前缀递减(++i,--i)会先进行运算然后再进行生成值。而后缀表达式会先生成值,然后再计算。

public class AutoInc{

public static void main(String[] args) {

int i=1;

int m = ++i; // 2

int n = i++; //2

int i2 = i; // 3

int m1 = --i; // 2

int n2 = i--; // 2

int i3= i; // 1

}

}

对于位操作符:

按位与运算(&)

定义:参加运算的两个数据,按二进制位进行“与”运算。

运算规则:

0&0=0 0&1=0 1&0=0 1&1=1

总结:两位同时为1,结果才为1,否则结果为0。

例如:3&5 即 0000 0011& 0000 0101 = 0000 0001,因此 3&5 的值得1。

注意:负数按补码形式参加按位与运算。

与运算的用途:

1)清零

如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

2)取一个数的指定位

比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。

3)判断奇偶

只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。

按位或运算(|)

定义:参加运算的两个对象,按二进制位进行“或”运算。

运算规则:

0|0=0 0|1=1 1|0=1 1|1=1

总结:参加运算的两个对象只要有一个为1,其值为1。

例如:3|5即 0000 0011| 0000 0101 = 0000 0111,因此,3|5的值得7。 

注意:负数按补码形式参加按位或运算。

或运算的用途:

1)常用来对一个数据的某些位设置为1

比如将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。

左移运算符(<

定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

右移运算符(>>)

定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。

操作数每右移一位,相当于该数除以2。

对于关系操作符==与equals():

==和!= 比较的是两个对象的引用,比较两个对象的实际内容是否相等,需使用equals()方法,但这个方法不适用与“基本类型” 基本类型应直接使用==和!=。

public class Equivalence{

public static void main(String[] args) {

Integer n1= new Integer(22);

Integer n2= new Integer(22);

System.out.print(n1==n2); // false

Integer n3= 22;

Integer n4= 22;

System.out.print(n3==n4); // true

Integer n5= 129;

Integer n6= 129;

System.out.print(n5==n6); // false

}

}

//所有的包装类对象都应该采用equals对象,对于integer类型的因为在-128~127之间范围内都会赋值到IntegerCache.cache中,存在复用的情况,所以可以直接用==比较,但是在这之外的就不可以了。

public class Equivalence{

public static void main(String[] args) {

Integer n1= new Integer(22);

Integer n2= new Integer(22);

System.out.print(n1.equals(n2)); // true

}

}

上面的是因为integer重写了equals方法。

但是对于我们自己所定义的类使用equals方法:

class Value{

int i;

}

public class Equivalence{

public static void main(String[] args) {

Value n1= new Value();

Value n2= new Value();

n2.i=n1.i=100;

System.out.print(n1.equals(n2)); // false

// 这是因为equals默认比较的是引用。所以我们在自己的类中覆盖equals()方法、对于大多数的java类库比较的是对象的内容,而非比较对象的引用。

}

}

String s3="as",s4="as"

String s5="asas"

String s6=s3+s4;

s5==s6 是false 因为s6的时候就是会new出一个新的String对象

final String s10=s3+s4;

s5==s10 是false 这里还会进行new出的,final只是影响的s10;

Q&A equals具有的特性:
  • 自反性:x.equals(x)为true

  • 对称性:当仅当y.equals(x)为true时x.equals(y)返回true.

  • 传递性:如果x.equals(y)和y.equals(2) 均为true,x.equals(2)为true.

当接收一个Object参数并满足以下性质:

  • 一致性:当两个对象均未被修改时反复调用x.equals(y)总是返回相反的值

  • 非空性:x.equals(null)总是返回false

逻辑与“短路”现象:

短路现象就是,一旦能够明确无误的确定整个表达式的值,就不在计算表达式剩余的部分。因此整个逻辑表达式靠后的部分有可能不会被计算。

public class ShortCircut{

public static void main(String[] args) {

boolean a=0<1 && 2<2 && 2<3; // 实际应该是true ,false,true

// 但是最后能够计算的只有前面两个, true ,false 确定了整个表达式的值为false,所以不会计算最后一个

System.out.print(a);

}

}

类型转换操作符:

在适当的时候java会允许将一种数据类型进行自动转换为另一种,但是如果有事后自己进行强转有可能是多余的,

对于将29.7专为int结果是30还是29?这肯定为29,如果你认为要四舍五入,那么你应该使用Math.round()方法

通常自动转换会在表达式中出现的数据类型决定表达式最终结果的数据类型,如果将一个float值与一个double值相乘结果就是double,如果一个int与一个long值进行相乘,那么就是long型。

好了这种就是要说的运算符。看看你的代码中有没有使用错误的情况。

sql 自动递增 在java_java基础 之 操作符相关推荐

  1. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(5)

    [十二章]数据类型 介绍 MySQL的数据分为以下几个大类: String Types 字符串类型 Numeric Types 数字类型 Date and Time Types 日期和时间类型 Blo ...

  2. sql怎么撤回update_零基础快速自学SQL,2天足矣!

    此文是<10周入门数据分析>系列的第6篇. 想了解学习路线,可以先行阅读" 学习计划 | 10周入门数据分析 " 上一篇分享了数据库的基础知识,以及如何安装数据库,今天 ...

  3. 如何让SELECT 查询结果额外增加自动递增序号

      图表1   如果数据表本身并不内含自动地增编号的字段时,要怎么做才能够让SELECT查询结果如图表1所示,额外增加自动递增序号呢?我们提供下列五种方法供您参考:   USE北风贸易; GO /* ...

  4. SQL Server调优系列基础篇(子查询运算总结)

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  5. java自动递增前缀式和后缀式区别

    java自动递增前缀式和后缀式区别 java自动递增(自动递减)前缀式表达式 '++' 操作符位于变量或表达式的前面,而后缀式表达式'++'位于变量或表达式的后面,Example: 前缀式: ++i: ...

  6. SQL Server 调优系列基础篇 - 子查询运算总结

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  7. php 数据库 自增值,Mysql应用MySql数据库自动递增值问题

    <Mysql应用MySql数据库自动递增值问题>要点: 本文介绍了Mysql应用MySql数据库自动递增值问题,希望对您有用.如果有疑问,可以联系我们. MYSQL必读 Create TA ...

  8. mysql中递增列_如何使用JDBC在MySQL中创建带有自动递增列的表?

    在创建表时,在某些情况下,我们需要自动生成/增加列的值(例如ID).各种数据库以不同的方式支持此功能. 在MySQL数据库中,您可以使用以下语法声明列自动递增.CREATE TABLE table_n ...

  9. SQL Server调优系列基础篇(常用运算符总结)

    原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握 ...

最新文章

  1. python自带的库有哪些_python常用的内置库
  2. ORACLE 日期比较
  3. 压缩包解压后SecureCRT无法连接的解答
  4. 什么是爱?[转载朋友发给我的信息]
  5. arcgis几何修复有作用吗_修复损坏的 shapefile
  6. 杀死 Oculus ,Facebook 改名 Meta ,是押注元宇宙还是“金蝉脱壳”?
  7. python优雅编程_Python优雅编程——Collections模块中的高性能数据类型
  8. 小程序 | 打开CMS时出现了404报错?
  9. Vue的基础认知一---构建环境/v指令的使用
  10. 无人驾驶插秧机智能辅助系统_无人驾驶插秧机搭载北斗导航驾驶系统,误差仅在2.5厘米内...
  11. Android APK加密原理与演示
  12. 惠普803墨盒清零步骤_惠普2622墨盒清零步骤
  13. 我对“渗透性测试”的理解
  14. 关键词热度分析工具_不懂亚马逊关键词分析怎么办?10款超好用的亚马逊运营必备关键词研究分析工具,建议收藏!...
  15. CSS3简单练习 魔方制作
  16. Flutter第3天--基础控件(上)
  17. KODI插件图标显示排列
  18. 微信支付-vue 实现微信支付-前端篇
  19. 计算机容差技术CAT最新应用,cat是计算机辅助什么?
  20. centos7虚拟机辅助DNS服务器

热门文章

  1. JDK 13 的五大新特性!你最中意哪个?
  2. save_path is not a valid checkpoint
  3. python 图像计算方位角
  4. Python实现RGB和Lab颜色空间互转
  5. torch nll_loss
  6. c2065 未声明的标识符 解决ok
  7. opencv 选择矩形框
  8. 我的csdnmark
  9. PyTorch ResNet 测试
  10. torch.topk