java基础-算术运算符(加减乘除取余),隐式转换、强制转换

发布时间 2023-04-30 20:21:48作者: ×不知该怎么√

一、运算符和表达式的定义

运算符:对字面量或者变量进行操作的符号。

表达式:用运算符把自变量连接起来,符合java语法的式子就可以称为表达式。

例如:

int a=10;
int b=20;
int c=a+b;

其中,+,是运算符,并且是算术运算符;a+b表达式,由于+是算数运算符,所以这个表达式叫算术表达式

二、运算符的分类

1、算术运算符

加+、减-、乘*、除/、取余%

当算术运算中数值的数据类型不一致时,就需要进行数据类型转换。数据类型转换又分为隐式转换强制转换。

隐式转换(数据类型自动提升)

把一个取值范围小的数值,转成取值范围大的数值。

byte<short<int<long<float<double

例如:

int a=10;
double b=a;

其中,b=10.0属于double数据类型

注意:隐式转换的两种提升规则

取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。

byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

例如:

byte b1=10;
byte b2=10;
数据类型 b3=b1+b2;

其中,b3的数据类型是int。

强制类型转换

把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的,如果一定要这么做就需要假如强制转换。

强制转换格式:目标数据类型 变量名=(目标数据类型)被强转的数据。

例如:

double a=12.2;
int b=(int)a;

注意,如果强转的数据比较大,就会发生错误。

例如:

int a=300;
byte b=(byte)a;

这时,b就会报错,因为byte类型的取值范围是-128~127,300超出了这个范围所以报错。

字符串的“+”操作

当“+”操作出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。作用是将前后的数据进行拼接,并产生一个新的字符串。

例如:

String a="12";
String b="2";
String c=a+b;//c=122

2、自增自减运算符

++(自增)和--(自减)无论是放在变量的前边还是变量的后边,单独写一行的结果是一样的。

但是参与计算时,a++(先用后加)和++a(先加后用)是有区别的。

例如:

 

int a=10;
int b=a++;//这时b=10,a=11,先用后加,表示先将a=10赋值给b,然后a再进行自增+1;
int c=10;
int d=++a;//这时d=11,c=10,先加后用,表示a先进行自增+1,然后再将自增后的值赋值给d;

 

3、赋值运算符

符号 作用 说明
= 赋值 int a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b赋值给变量a
-= 减后赋值

a-=b,将a-b赋值给变量a

*= 乘后赋值

a*=b,将a*b赋值给变量a

/= 除后赋值

a/=b,将a/b赋值给变量a

%= 取余后赋值

a%=b,将a%=b赋值给a

注意:

扩展的赋值运算符,隐含了一个强制类型转换。

例如:

short a=1;
short a+=1;//a=a+1-》右边的a是一个int数据类型,

4、关系(比较)运算符

符号 说明  
== a==b,判断a和b的值是否相等,成立为true,不成立为false  
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false  
>

a>b,判断a是否大于b,成立为true,不成立为false

 
>=

a>=b,判断a是否大于等于b,成立为true,不成立为false

 
<

a<b,判断a是否小于b,成立为true,不成立为false

 
<=

a<=b,判断a是否小于等于b,成立为true,不成立为false

 

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

5、逻辑运算符

符号 作用 说明
& 与、且 并且,两边都为真,结果才为真
| 或者,两边都为假,结果才能为假
^ 异或 相同为false,不同为true
! 非,取反 相反
&& 短路与 两个都为真,结果才是真
|| 短路或 只要有一个为真,结果就为真

6、三元运算符

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

注意:三元运算符的判断值必须被定义。

例如:

 

//需求:求两数是否相同
int number1=20;
int number2=30;
String s=number1==number2?"相同":"不相同";

其中,变量s代表了关系表达式number1==number2的结果。

三、运算符优先级

小括号高于一切。