运算符

运算符

1.算术运算符

1.1 运算符与表达式

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合Java语法的式子就可以称为表达式。

不同运算符连接的表达式体现的是不同类型的表达式

举例说明:

int a=10;

int b=20;

int c=a+b;

+:是运算符,并且是算术运算符

a+b:是表达式,由于+是算术运算符,所以这个表达式叫做算术表达式。

1.2 算术运算符

符号 作用
+
-
*
/
% 取余
package Operator;
/*
  算数运算符
 */
public class OperatorDemo01 {
	public static void main(String[] args) {
		//定义两个变量
		int a=6,b=4;
		System.out.println(a+b);
		System.out.println(a-b);
		System.out.println(a*b);
		System.out.println(a/b);
		System.out.println(a%b);
	}
}

运行结果:

10
2
24
1 //两个int型的数据算术运算的结果还是int 型,所以相除结果只保留整数。
2

1.3字符的“+”操作

拿字符进行“+”时,是拿字符在计算机底层对应的数值来进行计算的

package Operator;

public class OperatorDemo02 {
	public static void main(String[] args) {
		int i=10;
		char c1=‘A‘;
		char c2=‘B‘;
		System.out.println(i+c1);
		System.out.println(c1+c2);		
	}
}

运行结果:

75
131

算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。

byte类型,short类型和char类型将被提升到int类型。

整个表达式的类型自动提升到表达式中最高等级操作数同样的类型。等级顺序:byte,short,char -> int -> long -> float -> double

package Operator;

public class Test3 {
	public static void main(String[] args) {
		char a=‘A‘;
		int b=20;
		double c=30.0;
		System.out.println(a+b);
		System.out.println(b+c);
	}
}

运行结果:

85 //char型a与int型b相加,结果为int型
50.0 //int型b与double型c相加,结果为double型

1.4.字符串的“+”操作

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符。

System.out.println("Java"+"语言");
System.out.println("Java语言"+666);
System.out.println(666+"Java语言");
System.out.println("Java语言"+6+66);
System.out.println(6+"Java语言"+66);

Java语言
Java语言666
666Java语言
Java语言666
6Java语言66

字符串与字符串、字符串与数字中间出现“+”时,表示将他们连接起来,结果是字符串。

System.out.println(6+66+"Java语言");

72Java语言

出现多个“+”时,从左到右依次执行操作,数字与字符串、字符串与字符串之间的“+”是字符串连接符,但数字与数字之间的“+”仍是算术运算符。

2.赋值运算符

运算符

3.自增自减运算符

符号 作用 说明
++ 自增 变量的值加1
-- 自减 变量的值减1

++和--即可以放在变量的后边,也可以放在变量的前边。

单独使用时,++和--无论是放在变量的前边还是后边,结果都一样。

int i=10;
System.out.println("i:"+i);
i++;
System.out.println("i:"+i);
++i;
System.out.println("i:"+i);

运行结果:

i:10
i:11
i:12

参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。如果放在变量的前边,先拿变量做++或者--,后拿变量参与运算。

int i=10,j;
j=i++;
System.out.println("i:"+i);
System.out.println("j"+j);
j=++i;
System.out.println("i:"+i);
System.out.println("j:"+j);

运行结果:

i:11
j10
i:12
j:12

有如下代码:

int a=5;
int b=(a++)+(--a)+(++a);

问执行完之后,b的结果是多少?

结果:16

a=6 a=5 a=6

(a++) + (--a) + (++a)

? 5 + 5 + 6 = 16

4.关系运算符

运算符

关系运算符的结果都是boolean类型,要么是true,要么是false。

“==”是关系运算符,用于判断两边是否相等,“=”是赋值运算符,用于把符号后的值赋给符号前的变量。

5.逻辑运算符

逻辑运算符:用来连接关系表达式的运算符,也可以直接连接布尔类型的常量或者变量。

操作符 语义 描述
&& 与(并且) 两个操作数,同时为真,结果为真
|| 或(或者) 两个操作数,有一个为真,结果为真
非(取反) 意为“不是”,结果与跟的表达式相反

&& 短路与 表示要求两个或者多个表达式同时成立 则结果为真,如果第一个表达式不成立 则后续的表达式不再执行

int i=10,j=5;
System.out.println((--i>9)&&(++j)<7);
System.out.println("i:"+i+" j:"+j);

运行结果:

false
i:9 j:5 //因为&&为短路与,(--i>9)为假,后续操作不再执行,所以输出的j仍是5.

& 与 表示要求两个或者多个表达式同时成立 则结果为真 没有短路的效果,不管第一个表达式结果如何 都将执行完所有的表达式

int i=10,j=5;
System.out.println((--i>9)&(++j)<7);
System.out.println("i:"+i+" j:"+j);

运行结果:

false
i:9 j:6 //&没有短路效果,后面的++j继续执行。

|| 短路或 表示要求两个或者多个表达式有一个成立 则结果为真,如果第一个表达式成立 那么后续的不再执行

| 或 表示要求两个或者多个表达式有一个成立 则结果为真

| 没有短路的效果 不管第一个表达式结果如何 都将执行完所有的表达式

6.三元运算符

格式:关系表达式?表达式1:表达式2;

示例:a>b?a:b;

计算规则:

首先计算关系表达式的值

如果值为真(true),表达式1的值就是运算结果

如果值为假(false),表达式2的值就是运算结果

int a=10,b=5;
System.out.println(a>b?a:b);
System.out.println(5>10?a:b);

运行结果

10
5

运算符

上一篇:列表中插入元素


下一篇:QT的QVBoxLayout类的使用