9. Java语言基础 - 运算符

创建时间:2023-01-02 14:12
长度:3027
浏览:0
评论:0
按功能分类符号
算术运算符+ (加)
- (减)
* (乘)
/  (除)
% (求余)
++  (自加1)
--  (自减1)
关系运算符> (大于)
>=  (大于等于)
<  (小于)
<=  (小于等于)
== (等于)
!= (不等于)
逻辑运算符&(逻辑与)
| (逻辑或)
! (逻辑非)
&& (短路与)
|| (短路或)
赋值运算符=  (赋值)
+= ()
-=
*=
/=
%=
^=
&=
|=
<<=
>>=
位运算符& (按位与)
| (按位或)
^ (按位异或)
~ (按位取反)
<< (左移)
>> (带符号右移)
>>> (无符号右移)
条件运算符(三目运算符)布尔表达式 ? 表达式1 : 表达式2;
字符串连接运算符+
其它运算符instanceof
new


算术运算符

注意:一个表达式中有多个运算符,运算符有优先级,不确定或需要提高优先级的,使用括号括起来

    int n1 = 20;
    int n2 = 10;
      
    System.out.println(n1 + n2); // 30
    System.out.println(n1 - n2); // -10
    System.out.println(n1 * n2); // 300
    System.out.println(n1 / n2); // 2
    System.out.println(n1 % n2); // 0

++出现在变量后,先赋值再运算

int x = 25;
int x1 = x++;
System.out.println(x1); // 25

++出现在变量前,先运算再赋值

int m = 30;
int n = ++m;
System.out.println(n); // 31


关系运算符

注意:关系运算符的结果一定是布尔值,即true/false

基本类型比较的是值,引用类型比较的是引用地址

    int n1 = 20;
    int n2 = 10;

    System.out.println(n1 > n2); // true
    System.out.println(n1 >= n2); // true
    System.out.println(n1 < n2); // false
    System.out.println(n1 <= n2); // false
    System.out.println(n1 == n2); // false
    System.out.println(n1 != n2); // true


逻辑运算符

注意:

   1. 在逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型

   2. 短路与和逻辑与最终的结果是相同的,只不过短路与存在短路现象

   3. 短路或和逻辑或最终的结果是相同的,只不过短路或存在短路现象

&  逻辑与 -- 两边的结果都是true,结果返回true

|    逻辑或 -- 两边的结果只要有一个true,结果返回true

!    逻辑非 -- 取反,!false结果返回true.  !true结果返回false

^   两边的算子只要不一样,结果就是true

  System.out.println(true & true); // true
  System.out.println(true & false); // false
  System.out.println(true | false); // true
  System.out.println(false | false); // false
  System.out.println(true ^ true); // false
  System.out.println(false ^ false); // false
  System.out.println(true ^ false); // true

短路与、逻辑与的区别

逻辑与(&)第一个条件是false时,继续执行执行第二个条件

  int n1 = 20;
  int n2 = 10;
  System.out.println(n1 < n2 & n1++ < n2);
  System.out.println(n1); // 21

短路与(&&)第一个条件是false时,不会再执行第二个条件,直接返回false

  int n1 = 20;
  int n2 = 10;
  System.out.println(n1 < n2 && n1++ < n2);
  System.out.println(n1); // 20

什么时候会发生短路现象?

短路与:当第一个条件结果返回false时,会发生短路与

短路或:当第一个条件结果返回true时,会发生短路或


赋值运算符

普通赋值

int num = 10;
num = num + 10; // num = 15

扩展赋值 运算符

int num = 10;
num +=10; // num = 15
以上相当于普通赋值

num -=10; // 相当于num = (int)(num - 10);
num *=10; // 相当于num = (int)(num * 10);
num /=10; // 相当于num = (int)(num / 10);
num %=10; // 相当于num = (int)(num % 10);

以下代码报错,大容量转换成小容量需要加强制类型转换符;

下面累加10没有超出byte的取值范围,但由于编译阶段编译器不会去判断具体的值,只会认为是num是int类型;

具体请看《基本类型转换规则

报错:错误: 不兼容的类型: 从int转换到byte可能会有损失

byte num = 10;
num = num + 10;

普通赋值与扩展赋值的区别,正常编译

扩展类赋值的运算结果不改变运算结果

byte num = 10;
num += 10;


连(拼)接运算符

Java中用+号来连接两个字符串,在Java中+号有两个作用,一个是求和运算,另一个作用是连接字符串

什么时候进行求和运算?

   当“+”两边的数据类型都是数字的话,那就是进行求和运算;

什么时候进行字符串连接?

   当“+”两边的数据类型只要有一个是字符串类型(String)时,那就是进行字符串连接运算,并且运算出来的结果一定是字符串类型

注意:一个表达式可以有多个“+”号,在没有添加小括号的前提下,那么Java是遵守从左到右的运算;

int num = 10;
System.out.println("10"+ 10); // 1010
System.out.println(10 + num); // 20;
System.out.println(10 + 20 + "10"); // 3010
System.out.println(10 + (20 + "10")); // 102010


三元(目)运算符

格式:判断条件 ?表达式1 : 表达式2;

判断条件为true时,执行表达式1;判断条件为false时,执行表达式2

boolean sex = true;
// sex ? '男' : '女';  //报错, 必须拿一个变量来接收
char sexText = sex ? '男' : '女';
System.out.println(sexText); // 男


评论(共0条)