java入门-Java的操作符

Java操作符

Java也提供了一套丰富的操作符(运算符)来操纵变量。

算数运算符

定义

定义: 算数运算符用来进行数学中的算数运算,如下表所示:

运算符描述案例
加号(有字符串参与时为拼接符号)int c =a + b; String s = “a” + “b”;
减号int c = a-b;
*乘号int c = a * b;
/除号int c = a / b;
取模int c = a % b;

案例

int a = 3;
int b = 4;
System.out.println("a+b=" + (a + b));
System.out.println("a-b=" + (a - b));
System.out.println("a*b=" + (a * b));
System.out.println("a/b=" + (a / b));
System.out.println("a%b=" + (a % b));

运行结果:

a+b=7
a-b=-1
a*b=12
a/b=0
a%b=3

不一样的"+"运算符

"+"号运算符当有字符串参与时(即"abc"形式的类型参与运算),作为拼接/连接符号。

int x = 3;
String str = "4";
String t = str + x;
System.out.println("t=" + t);

运行结果

t=43

除法的结果未必是小数

java对除法运算最后的结果是由参与运算的类型决定的。

比如: int a = 3; int b = 4; a/b —的结果依然是int类型,这样就会造成除法的结果丢弃小数点后的数值。

int a = 3;
int b = 4;
double c = a / b;
System.out.println("c=" + c);

运行结果

c=0

赋值运算符

定义

赋值运算符(=): 在基本类型变量运算中用来给变量进行赋值,即将右边的常量、变量(变量存储的值)赋值给左边的变量。

案例

int x = 3;
double y = 4.01;
char ch = 'a';

System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("ch=" + ch);

运行结果

x=3
y=4.01
ch=a

自增减运算符

定义

自增(减)运算符: 进行变量自增(减)1运算。 即对变量自身进行+1运算,但是由于其出现的位置不同又可以分为前置(如:++a)、后置运算符(如: a++)。

运算符描述案例
++aa先自增1int y = ++a;[a=a+1, then: y = a]
a++a后自增1int y = a++;[y=a, then: a=a+1]
--aa先自减1int y = --a;[a=a-1, then: y = a]
a--a后自减1int y = a–;[y=a, then: a=a-1]

案例

int x = 3;
int y = ++x;
System.out.println("x=" + x + ",y=" + y);

int a = 3;
int b = a++;
System.out.println("a=" + a + ",b=" + b);

运行结果

x=4,y=4
a=4,b=3

与算数的+1/-1比较

byte a = 1;
a = a + 1;

以上代码会存在类型溢出风险,原因是常量1默认为int, int + byte 结果应该为int,但是=号左边为byte,右边向左边写入时会有溢出问题。

byte a = 1;
a++;

java优化了++运算符,对其进行了类型处理。

复合运算符

定义

复合的赋值语句,包含了运算和赋值。

运算符描述案例
+=a先加,再赋值a += b; → [a = a+b]
-=a先减,再赋值a -= b; → [a = a-b]
*=a先乘,再赋值a = b; → [a = ab]
/=a先除,再赋值a /= b; → [a = a/b]
%=a先取模,再赋值a %= b; → [a = a%b]

案例

int x = 3;
int y = 5;
y += 5;
System.out.println("y=" + y);

运行结果

y=10

优化的赋值运算

假设以下代码,复合运算符(+=)优化了 计算并对运算结果进行了类型处理。建议大家在开发中多使用复合运算符。

byte a = 3;
a +=4;

关系运算符

定义

关系运算符, 关系运算符返回的结果是 boolean 类型(true/false)。

运算符描述案例
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b
==判断是否相等a == b
!=不等于a != b

案例

int x = 3;
int y = 4;
System.out.println("x>y: " + (x > y));
System.out.println("x<y: " + (x < y));
System.out.println("x>=y: " + (x >= y));
System.out.println("x<=y: " + (x <= y));
System.out.println("x==y: " + (x == y));
System.out.println("x!=y: " + (x != y));

运算结果

x>y: false
x<y: true
x>=y: false
x<=y: true
x==y: false
x!=y: true

浮点数的比较是不准确的

 System.out.println((3 * 0.1) == 0.3);

运行结果

false

逻辑运算符

定义

逻辑运算符一般用于连接boolean类型的表达式或者值。

运算符描述案例
&&逻辑与,操作符左右同时成立3>1 && 6 > 2
||逻辑或,操作符左右其中一个成立a > b || b > c
!逻辑非,对逻辑结果取反boolean a = true;a = !a;

案例

int x = 3;
int y = 4;
boolean f1 = (y>0) && (y>x);
boolean f2 = (y>0) || (y>x);
boolean f3 = !(y>x);
System.out.println("f1=" +f1);
System.out.println("f2=" +f2);
System.out.println("f3=" +f3);

运行结果

f1=true
f2=true
f3=false

短路运算

逻辑运算中的短路运算:如果存在逻辑与运算,运算过程先左 →右,如果左边不成立则不需要计算右边的表达式,即短路运算;

int x = 5;
int y = 4;
boolean f = (y < 0) && (y < x);
System.out.println("f=" + f);

短路运算规则: 先计算(y<0)结果为false 那么就不去比较(y<x)。

& 和 |

&,| 也可以用来进行逻辑运算,但是它们没有短路运算能力。

int a = 3;

boolean f = a < 3 & a++ > 1;
System.out.println("f=" + f);
System.out.println("a=" + a);

运行结果

f=false
a=4

tips: a < 3不成立后, &右侧代码继续运行 a++执行一次,a = 4;

位运算符

定义

位操作符可以进行二进制运算。

运算符描述案例
&位与,同1为11 0 0 0 & 1 0 1 0 → 1 0 0 0
|位或,有1为11 0 0 0 | 1 0 1 0 → 1 0 1 0
^异或,相同为0,相异为11 0 0 0 ^ 1 0 1 0 → 0 0 1 0
>>有符号右移动1 0 0 0 >> 2 → 0 0 1 0
<<有符号左移动0 0 1 0 0 0 >> 2 → 1 0 0 0 0 0
>>>无符号右移动1 0 0 0 >>> 2 → 1 0
<<<无符号左移动0 0 0 1 <<< 2 → 1 0 0

案例

int x = 3;
int y = 4;
System.out.println("x & y: " + (x & y));
System.out.println("x | y: " + (x | y));
System.out.println("x ^ y: " + (x ^ y));
System.out.println("x >> y: " + (x >> y));
System.out.println("x << y: " + (x << y));

运行结果

x & y: 0
x | y: 7
x ^ y: 7
x >> y: 0
x << y: 48

异或(^)特性

X ^ Y ^ Y = X

int x = 3;
int y = 4;
System.out.println("x ^ y: " + (x ^ y));
System.out.println("x ^ y ^ y: " + (x ^ y ^ y));

运行结果

x ^ y: 7
x ^ y ^ y: 3

三目运算符

定义

三目运算符类似于一个简化的条件表达式。

img

案例

int x = 3;
int t = (x > 3) ? 99 : -99;
System.out.println("t=" + t);

运行结果

t = 99
  • 32
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值