重修Java——运算符

来源:互联网 发布:mac finder 打开路径 编辑:程序博客网 时间:2024/04/28 20:46

Java运算符

在Java中有以下几类运算符:

1. 算术运算符
2. 关系运算符
3. 逻辑运算符
4. 按位运算符
5. 移位运算符

算数运算符

      符号有(+、-、*、/、%、=),几乎所有的运算符都只能作用于主类型(基本数据类型),但是“=”、“==”和“!=”,它们能操作所有的对象。除此之外,String类支持“+”和“+=”,我想大概是因为String使用的频率太多的原因,所以才有了“+”运算符的重载。
      那优先级呢,先乘除后加减,有括号先括号。所以在实际操作的时候,与其怕写错顺序小心的计算顺序,不如对先运算的部分都写上括号。
      赋值操作(=),将右边的值复制到左边。其中右边的值可以是任意的常数、变量或者表达式,只要产生一个值就行。但是左边必需是一个明确的已命名的变量,这个因为他需要一个空间来存储这个值。但是对对象进行赋值的时候,操作的是它的句柄/引用,比如:“C=D”那么C、D都会指向同一个对象。
如果是主类型
对象

一元运算符

      其实就是+1、-1,减号会取运算对象的相反值。“+”实际不做任何事情。

自增和自减(++、–)运算符

      i++就相当于i=i+1;i–相当于i=i-1。唯一需要注意的地方就是——i++和++i之间的区别(面试可能问)。i++先生成值,再执行运算,++i先运算再生成值。

public class Jia {    public static void main(String[] args) {        int i = 1;        System.out.println("i="+i);        System.out.println("++i="+ ++i);        System.out.println("i++="+ i++);        }}

结果:
i=1
++i=2
i++=2

关系运算符

      符号有<、>、<=、>=、==和!=。其中只有“==”和“!=”适用于所有的类型,其他运算符不适用于布尔类型。关系运算的结果是一个“布尔”(Boolean)结果,用于表示关系对象之间的关系。如果是真实的返回“true”,否则返回“false”。

“==”和“!=”

      总的来说是来比较值是否相等的。但具体来说又分为两种情况——基本数据类型和引用数据类型。用于比较基本数据类型时,它们的值就是存在栈中,比较的就是这个值。如果比较的对象是对象,String举例,用new的方式创建两个“abc”字符串。在堆中会开辟两个空间,然后将空间的地址赋给栈区对象的引用,比较的就是这两个引用的地址是否指向同一个空间。所以当要比较对象的内容相等的时候一般使用equals方法(默认的equals方法和“==”相同,比较句柄,所以自定义的类需要重写这个方法)。这里写图片描述

逻辑运算符

      逻辑运算符AND(&&)、OR(||)、以及(!)——以自变量的逻辑关系为基础。&&、||、!只能运用于布尔值。和String一起使用,布尔值会自动转换成String类型的。

持短路运算

      比如A&&B,如果A已经是false了,那么后面的部分不会执行。

按位运算符

      允许我们操作一个整数主数据类型的单个“比特”,即二进制。按位运算符会对两个自变量中对应的位执行布尔代数,最终生成一个结果。

移位运算符

      运算的对象也是二进制的位。用于处理整数类型。左移(<<):运算对象左移指定的位数,低位补零。”有符号“右移使用符号扩展:值为正,则在高位补零;值为负则在高位补1。Java添加了一种”无符号”右移运算符(>>>),无论正负都会在高位插入零。因为short、byte会先转换int类型的,所以右移可能会报错,零扩展不会发生那些情况。

0 0
原创粉丝点击