java基础三(运算符)

标识符

在Java语言中,与类无关的运算符只有赋值运算符、算术运算符、关系运算符、逻辑运算符和位运算符。
赋值运算符
符号为“=”,作用是将数据、变量或对象赋值给相应类型的变量或对象,例如:

int a=5;                         //将数据复制给变量
long b=a;                        //将变量赋值给变量
Object object=new Object();      //创建对象

赋值运算符的结合性是从右到左的,例如:

int a=5+6;    //应该先计算5+6 

算术运算符
算术运算符支持整数型数据和浮点型数据的运算,两者之间进行算术运算时,java会自动完成数据类型的转换,计算结果为浮点数据。
“+”:加法运算,例如10+2.5,结果为12.5,为double类型
“-”:减法运算,例如10-7.5F,结果为2.5F,为fioat类型
“* ”:乘法运算,例如6*8,结果为48, 为int类型
“/”:除法运算,例如21/3L,结果为7L,为long类型
“%”:求余运算,例如15%4,结果为3,为int类型

关系运算符
关系运算符用于比较大小,运算结果为boolean类型。表达式成立运算结果为true,表达式不成立运算结果为false。
“>”:大于,可运算数据类型为整数型、浮点数型、字符型
“<”:小于,可运算数据类型为整数型、浮点数型、字符型
“==”:等于,可运算数据类型为所有数据类型
“!=”:不等于,可运算数据类型为所有数据类型
“>=”:大于或等于,可运算数据类型为整数型、浮点数型、字符型
“<=”:小于或等于,可运算数据类型为整数型、浮点数型、字符型

注:Java中“=”是赋值运算,而“= =” 判断值是否相等,“= = =”是判断的是值及类型是否完全相等,而“= = =”只在JavaScript中有
比如 a=b 就是把b的值赋予给a; a==b 就是判断a等于b

逻辑运算符
逻辑运算符用于对boolean型数据进行运算,运算结果仍为boolean型。
java中的逻辑运算符有“!(取反)” “^(异或)” “&(非简洁与)” “|(非简洁或)” “&&(简洁与)” “||(简洁或)

运算符“!”:用于对逻辑值进行取反运算,例如:

System.out.println(!true);     //输出运算结果为false
System.out.println(!false);    //输出运算结果为true

运算符“^”:用于对逻辑值进行异或运算 ,当运算符两侧同时为true或false时,运算结果为false,否则运算结构为true,例如;

System.out.println(true^true);     //输出运算结果为false
System.out.println(true^false);    //输出运算结果为true
System.out.println(false^true);     //输出运算结果为true
System.out.println(false^false);    //输出运算结果为false

运算符“&”和“&&”:均为逻辑与运算,当运算符两侧同时为true时,运算结果为true,否则运算结果为false,例如:

System.out.println(true&true);     //输出运算结果为true
System.out.println(true&false);    //输出运算结果为false
System.out.println(false&true);     //输出运算结果为false
System.out.println(false&false);    //输出运算结果为false

System.out.println(true&&true);     //输出运算结果为true
System.out.println(true&&false);    //输出运算结果为false
System.out.println(false&&true);     //输出运算结果为false
System.out.println(false&&false);    //输出运算结果为false

运算符“&&”为简洁与运算符,运算符“&”为非简洁与运算符,区别如下:

  1. 运算符“&&”只有在其左侧位true是,才运算其右侧的逻辑表达式,否则直接返回运算结果false;
  2. 运算符“&”无论其在左侧为true或false,都要运算其右侧的逻辑表达式,最后才返回运算结果。

运算符“||”和“|”:用于逻辑或运算。当运算符的两侧同时为false时,结果为false,否则运算结果均为true,例如:

System.out.println(true|true);     //输出运算结果为true
System.out.println(true|false);    //输出运算结果为true
System.out.println(false|true);     //输出运算结果为true
System.out.println(false|false);    //输出运算结果为false

System.out.println(true||true);     //输出运算结果为true
System.out.println(true||false);    //输出运算结果为true
System.out.println(false||true);     //输出运算结果为true
System.out.println(false||false);    //输出运算结果为false

运算符“||”为简洁或运算符,运算符“|”为非简洁或运算符,区别如下:

  1. 运算符“||”只有在其左侧为false时,才运算其右侧的逻辑表达式,否则直接返回运算结果true;
  2. 运算符“|”无论其左侧为true或false,都要运算其右侧的逻辑表达式,最后才返回运算结果。

位运算符
位运算符是对操作数以二进制为单位进行的操作和运算,运算结果均为整数型。位运算符又分为逻辑位运算符和位移运算符。
逻辑位运算符有“~(按位取反)”、“&(按位与)”、“|(按位或)”和“^(按位异或)”,操作数进行按位运算,运算规则如下表:

操作数x 操作数y ~x x&y x按位或y x^y
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0

按位取反运算是将二进制中的0修改为1,1修改为0
在进行按位与运算时,只有当两个二进制位都为1时,结果才为1;
在进行按位或运算时,只要有一个二进制位为1,结果就为1;
在进行按位异或运算时,当两个二进制位同时为0或1时,结果为0,否则结果为1。

下面是用来理解逻辑位运算符的例子,如下:

public calss Example{
    public static void main(String[] args){
        int a=5&-4;          //运算结果为4
        int b=3|6;           //运算结果为7
        int c=10^3;          //运算结果为9
        int d=~(-14)//运算结果为13
    }
}

注:数字需要转化为二进制

移位运算符有“<<(左移,低位添0补齐)”、“>>(右移,高位添符号为)”、“>>>(右移,高位添0补齐)”,用来对操作数进行移位运算。

用来理解移位运算符的例子,如下:

public calss Example{
   public static void main(String[] args){
       int a=-2<<3;                   //运算结果为-16
       int c=15>>2;                   //运算结果为3
       int e=4>>>2;                   //运算结果为1
       int f=-5>>>1;                  //运算结果为2147483645
   }
}

对象运算符
对象运算符(Instanceof)用来判断对象是否为某一类型,运算结果为boolean型,如果是则返回true,否则返回false。
对象运算符的关键字为“instanceof”,用法如下:

对象标识符 instanceof 类型标识符
java.util.Date date=new java.util.Date();
System.out.println(date instanceof java.util.Data);    //运算结果为true
System.out.println(date instanceof java.sql.Data);     //运算结果为false

其他运算符

运算符 说明 运算结果类型
++ 一元运算符,自动递增 与操作元的类型相同
- - 一元运算符,自动递减 与操作元的类型相同
?: 三元运算符,根据“?”左侧的逻辑值,决定返回“:”两侧中的一个值,类似if…else流程控制语句 与返回值的类型相同
[ ] 若用于声明、建立或访问数组的元素 用于创建数组对象,则类型为数组;若用于访问数组元素,则类型为该数组的类型
. 用来访问类的成员或对象的事例成员 若访问的是成员变量,则类型与改变量相同;若访问的是方法,则类型与该方法的返回值相同
  1. 自动递增、递减运算符
    ++和–运算符既可以放在操作元素前面也可以放在操作元素后面,位置不同,得到的结果也是不同的。放在操作元素前面,会先将变量加1或减1,然后再使该变量参与运算表达式;放在操作元素后面,会使变量先参与运算表达式,然后再将变量加1或减1.例如:
int a=3;
int b=3;
int c=2+(++a);               //先将a+1,然后再执行2+4
int d=2+(b++);               //先执行“2+3”,然后再将变量b+1
System.out.println(c);       //输出结果为6
System.out.println(d);       //输出结果为5
System.out.println(a);       //输出结果为4
System.out.println(b);       //输出结果为4

运算符优先级:由高到低
java基础三(运算符)