【Java学习笔记】【基础篇】05.运算符

运算符

Java支持如下运算符:

  • 算术运算符:+,-,*,/,%,++,–
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>> (了解)
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

1.二元运算符

①整数运算:

long a = 123123123L;
int b = 123;
short c = 10;
byte d = 8;

System.out.println(a+b+c+d);  //Long,操作数有一个为Long,则结果也为Long
System.out.println(b+c+d);    //int,操作数没有Long,即使操作数全为short,byte,结果也为int
System.out.println(c+d);      //int

②浮点运算:

float a = 3.1415F;
double b = 3.1415;
float c = 1.1232131F;

System.out.println(a+b);  //double,操作数有一个为double,则结果为double
System.out.println(b+c);  //double
System.out.println(a+c);  //float,操作数都是float,则结果才为float

③关系运算:

int a = 10;
int b = 20;

System.out.println(a>b);  //false
System.out.println(a<b);  //true
System.out.println(a==b); //false
System.out.println(a!=b); //true

④取模运算

int a = 21;
int b = -10;
int c = 9;
int d = -9;
System.out.println(a%b);  //1,正数%负数=正数
System.out.println(a%c);  //3,正数%正数=正数
System.out.println(b%c);  //-1,负数%正数=负数
System.out.println(b%d);  //-1,负数%负数=负数

2.一元运算符

①自加自减运算:

int a = 3;
int b = a++; //a先给b赋值,b=3,再自增。
int c = ++a; //a先自增,再给c赋值。

System.out.println(a);  //5
System.out.println(b);  //3
System.out.println(c);  //5

②幂运算:

int a = 3^2; //注意:java中不能这么处理,^是异或符号。
//正确方法:
double a = Math.pow(2,3);
System.out.println(a);  //8.0

3.逻辑运算符:

举例:

boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a&&b));      //&&:逻辑与运算符,当且仅当两个变量都为真,结果才为true
System.out.println("a || b:" + (a||b));      //||:逻辑或运算符,两个变量有一个为真,结果为true
System.out.println("!(a && b):" + !(a&&b));  //!:true变为false,false变为true
输出:
a && b:false
a || b:true
!(a && b):true

**短路运算:**从左到右计算,如果判断结果确定则不会再计算下去。

int a = 5;
boolean b = (a < 4)&&(a++ < 4);
System.out.println(a);  //5,证明a++并没有计算
System.out.println(b);  //false

4.位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。

操作符描述
&如果相对应位都是1,则结果为1,否则为0
|如果相对应位都是0, 则结果为0,否则为1
^如果相对应位相同,则结果为0,否则为1
~按位取反
<<二进制下按位左移运算符
>>二进制下按位右移运算符
>>>二进制下无符号按位右移补零操作

例如:

A = 0011 1100  //60
B = 0000 1101  //13
-------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A = 1100 0011    
A << 2 = 1111 0000 = 240    //向左移动两位,左移n位相当于乘2的n次方
B >> 2 = 113             //向右移动两位,低位舍弃,高位正数补0、负数补1,右移n位相当于除以2的n次方
A >>> 2 = 0000 1111 = 15    //向右移动后补0,右移n位相当于除以2的n次方

常见面试题:

int a = 2 * 8怎样运算效率最快?
答:System.out.println(2<<3);
//在系统中运算是以二进制的形式进行的。相比来说两个二进制数相乘运算比移位运算慢一些。

5.扩展运算符

扩展运算符用法举例等效表达式
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b

6.字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

int a = 1;
int b = 2;
System.out.println("" + a + b);  //12
System.out.println(a + b + "");  //3

7.三元运算符

语法格式:

x ? y : z

其中x为boolean类型表达式,若x为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

例如:

int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println("type = " + type);   //及格

8.运算符优先级

优先级运算符结合性
1()、[]、{}从左向右
2!、+、-、~、++、–从右向左
3*、/、%从左向右
4+、-从左向右
5<<、>>、>>>从左向右
6<、<=、>、>=、instanceof从左向右
7==、!=从左向右
8&从左向右
9^从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:从右向左
14=、+=、-=、*=、/=、&=、|=、^=、~=、<<=、>>=、>>>=从右向左
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AmazingMing_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值