Java基础篇-操作符

145 阅读3分钟

前言

为实现逻辑和运算要求,编程语言设置了各种不同的运算符,且有优先级顺序,所以有的初学者使用复杂表达式的时候搞不清楚。这里详细介绍一下Java中的常用操作符。

java的操作符主要分为有以下:1、算数运算符;2、赋值运算符;3、自增自减运算符;4、关系操作符;5、逻辑操作符;6、三元运算符。算术运算符号,就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。

当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。最简单的就是先乘除后加减,但经常会忘记,所以可以用括号明确规定计算顺序。

赋值运算符

赋值使用操作符 “=”,它的意思是‘取右边的值赋值给左边’

可以将一个常数赋值给一个变量-基础类型赋值,如下:

int a=1;
a = 10;

算数操作符

java的算术运算符与其他大多程序设计语言是相同的。其中包括加(+)、减(-)、乘(*)、除(/)以及取模操作符(% ,整数除法中产生的余数)。

示例:

public class Test {  
    public static void main(String[] args) {  
        int a = 10;  
        int b = 3;  
        int i;  
        i = a + b;  
        System.out.println("a + b : " + i);  
        i = a - b;  
        System.out.println("a - b : " + i);  
        i = a * b;  
        System.out.println("a * b : " + i);  
        i = a / b;  
        System.out.println("a / b : " + i);  
        i = a % b;  
        System.out.println("a % b : " + i);  
    }  
}

运行结果:

a + b : 13
a - b : 7
a * b : 30
a / b : 3
a % b : 1

自增自减运算符

主动递增操作符 “++”,主动递减操作符 “--”,如 ++a 就等同于 a= a+1
这两个操作符各有两种使用方式,通常称为“前缀式” 和 ”后缀式“
前缀式:先执行运算,再生成值; 后缀式:先成值,再执行运算

示例:

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

运行结果:

i : 1
++i : 2
i++ : 2
i : 3
--i : 2
i-- : 2
i : 1

关系操作符

关系运算符生成的是一个boolean类型的结果,即ture / false。关系运算符包括小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=)
==!= 适用于所有数据类型 ,也适用于所有对象

示例

int a = 1; 
int b = 2;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
String s = "s";  
String s1 = "s";  
System.out.println(s == s1);

结果

false
true
false
true

逻辑操作符

逻辑操作符:与( && )、或( || )、 非( ! ) ,根据参数的逻辑关系,生成一个布尔值(true 或false)。只可适用于布尔值。

示例

public static void main(String[] args) {  
    int a = 10;   
    int b = 3; 
    System.out.println("((a > b) && (b < 5)) : " + ((a > b) && (b < 5)));  
    System.out.println("((a > b) || (b < 5)) : " + ((a > b) || (b < 5)));  
    System.out.println("!((a > b) && (b < 5)) : " + !((a > b) || (b < 5)));
}

结果

((a > b) && (b < 5)) : true
((a > b) || (b < 5)) : true
!((a > b) && (b < 5)) : false

按位操作符

按位操作符包括 按位与‘&’、按位或"|"、按位非"~"、按位异或‘^’;用来操作整数基本数据类型中的单个‘bit’,即二进制位.布尔类型作为一种单比特值对待。 按位操作符可与等号‘=’联合使用,以便合并运算和赋值。除了按位非‘~‘(由于按位非为一元操作符)

  • 按位与‘&’ : 任意二进制位与0进行&运算,结果是0;与1进行&运算,结果是其原值。即两数对应的二进制位都为1,结果才是1;例:1&0 = 0;0&0 = 0;1&1 = 1。
  • 按位或'|' :任意二进制位与0进行 | 运算,结果为其原值;与1进行 | 运算,结果为1。即两数对应的二进制位有一个为1,结果就为1;1 | 0 = 0;0 | 0 = 0。
  • 按位异或^ :任意相同二进制位进行^运算,结果为0;任意不同二进制位进行 ^ 运算,结果为1.
  • ~ :按位取非,
    1. ~正数:①正数的二进制全部(包含符号位)按位取反(不是求反码),②对取反后的值除了符号位再取反即求反码,③+1。(其实就是取反符号位后+1)
    2. ~负数:①负数的二进制全部(包含符号位)按位取反,②+1,③不包含符号位再取反。

示例

public static void main(String[] args) {  
    byte a = 10; // 对应二进制 1010  补齐八位即 00001010
    byte b = 3; // 对应二进制 0011  补齐八位即 00000011
    System.out.println("a | b : " + (a | b)); // 按位或得到 1011 即十进制的 11 
    System.out.println("a & b : " + (a & b));  // 按位与得到 0010 即十进制的 2 
    /** 
    * ① b是正数先按位取反得到二进制 11110101 (包括符号位--第一位)
    * ② 对取反后的值除了符号位再取反即求反码 得到 10001010
    * ③ +1 即得到 10001011 对应十进制 -11
    */
    System.out.println("~b : " + ~b); 
    System.out.println("a ^ b : " + (a ^ b)); // 按位异或得到 1001 即十进制的 9 
    System.out.println("(true | false) : " + (true | false));

}

运行结果

a | b : 11 a & b : 2 ~a : -11 a ^ b : 9 (true | false) : true

三元操作符

三元操作符又称条件操作符,它有三个操作数,根据这三个操作数,最终生成一个值。
boolean表达式 ? value0 : value1
如果boolean表达式结果为true,计算value0结果 为最终产生的值
如果boolean表达式结果为false,计算value1结果 为最终产生的值

示例

int a = 10;  
// 使用三元操作符判断a的大小,生成对应的值给变量b赋值
int b = a > 10 ? 10 : 20;

也可以换用普通的if-else

int a = 10; 
int b;
if (a > 10) {
    b = 10;
} else {
    b = 20;
}