热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sql自动递增在java_java基础之操作符

在各个语言中都会设及到我们的数据操作运算,无论是java还是其他语言中。操作符主要包含算术操作符,位操作符,比较运算符,逻辑

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

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

操作符:

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

7b26052c849d0bbc789cdd1e64c6e2a9.png

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

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

通常包含前缀式(++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)即可得到。

左移运算符(<

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

设 a&#61;1010 1110&#xff0c;a &#61; a<<2 将a的二进制位左移2位、右补0&#xff0c;即得a&#61;1011 1000。

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

右移运算符(>>)

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

例如&#xff1a;a&#61;a>>2 将a的二进制位右移2位&#xff0c;左补0 或者 左补1得看被移数是正还是负。

操作数每右移一位&#xff0c;相当于该数除以2。

对于关系操作符&#61;&#61;与equals()&#xff1a;

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

public class Equivalence{

public static void main(String[] args) {

Integer n1&#61; new Integer(22);

Integer n2&#61; new Integer(22);

System.out.print(n1&#61;&#61;n2); // false

Integer n3&#61; 22;

Integer n4&#61; 22;

System.out.print(n3&#61;&#61;n4); // true

Integer n5&#61; 129;

Integer n6&#61; 129;

System.out.print(n5&#61;&#61;n6); // false

}

}

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

public class Equivalence{

public static void main(String[] args) {

Integer n1&#61; new Integer(22);

Integer n2&#61; new Integer(22);

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

}

}

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

但是对于我们自己所定义的类使用equals方法&#xff1a;

class Value{

int i;

}

public class Equivalence{

public static void main(String[] args) {

Value n1&#61; new Value();

Value n2&#61; new Value();

n2.i&#61;n1.i&#61;100;

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

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

}

}

String s3&#61;"as",s4&#61;"as"

String s5&#61;"asas"

String s6&#61;s3&#43;s4;

s5&#61;&#61;s6 是false 因为s6的时候就是会new出一个新的String对象

final String s10&#61;s3&#43;s4;

s5&#61;&#61;s10 是false 这里还会进行new出的&#xff0c;final只是影响的s10;

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

  • 对称性&#xff1a;当仅当y.equals(x)为true时x.equals(y)返回true.

  • 传递性&#xff1a;如果x.equals(y)和y.equals(2) 均为true,x.equals(2)为true.

当接收一个Object参数并满足以下性质&#xff1a;

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

  • 非空性&#xff1a;x.equals(null)总是返回false

逻辑与“短路”现象&#xff1a;

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

public class ShortCircut{

public static void main(String[] args) {

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

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

System.out.print(a);

}

}

类型转换操作符&#xff1a;

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

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

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

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

32e19211fc5529a019f197e834e27b02.gif



推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
悟道山水_805
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有