Java中的运算符1.docx
- 文档编号:5403512
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:23
- 大小:21.14KB
Java中的运算符1.docx
《Java中的运算符1.docx》由会员分享,可在线阅读,更多相关《Java中的运算符1.docx(23页珍藏版)》请在冰豆网上搜索。
Java中的运算符1
一、Java中的运算符
在Java中,按功能划分主要包含以下运算符。
1.算术运算符
2.关系运算符
3.布尔运算符
4.赋值运算符
5.字符串连接运算符
6.条件运算符
7.其他运算符,如:
instanceof,new
1.1算术运算符
算术运算符主要针对的是数值类型变量的运算,byte、short、int、long、float和double。
算术运算符:
算术运算符
描述
+
相加
-
相减
*
相乘
/
返回整除的值,10/3=3、21/10=2
%
返回余数10%3=1、21%10=1
++
自加一,如果++出现在变量的前面,先自加一在进行其他运算
如果++出现在变量的后面,先进行其他运算在自加一
--
自减一,原理同上
通过一个例子说明。
publicclassOperatorTest01{
publicstaticvoidmain(String[]args){
//声明两个整型变量
inti=11;
intj=4;
//进行算术运算
System.out.println(i+j);
System.out.println(i-j);
System.out.println(i*j);
System.out.println(i/j);
System.out.println(i%j);
//++运算符在变量的前面或后面变量都会自加一
intk=10;
k++;
System.out.println(k);
++k;
System.out.println(k);
k=10;
intl=k++;
System.out.println(l);
System.out.println(k);
k=10;
l=++k;
System.out.println(l);
System.out.println(k);
//++运算符在变量的后面,先进行其他运算然后自加一
k=10;
System.out.println(k++);
System.out.println(k);
//++运算符在变量的前面,先自加一在进行其他运算
k=10;
System.out.println(++k);
}
}
1.2关系运算符
关系运算符主要是对数值类变量进行比较的,表达式的结果一定是布尔类型的值。
关系运算符:
关系运算符
描述
<
小于
<=
小于等于
>
大于
>=
大于等于
==
等于
!
=
不等于
关系运算的结果一定是一个布尔类型,如:
10>3是true。
publicclassOperatorTest02{
publicstaticvoidmain(String[]args){
inti=10;
intj=5;
System.out.println(i>j);
System.out.println(i>=j);
System.out.println(i System.out.println(i<=j); System.out.println(i==j); System.out.println(i! =j); booleanb=i } } 1.3布尔运算符 布尔运算符: 布尔运算符 描述 && 短路与 || 短路或 & 与 | 或 ! 非(取反) ^ 异或 布尔运算符两边的算子必须都是布尔类型,整个表达式的运算结果也是一个布尔类型。 布尔运算: A B A&&B A||B A&B A|B A^B ! A true true true true true true false false false false false false false false false true true false false true false true true false false true false true false true true true publicclassOperatorTest03{ publicstaticvoidmain(String[]args){ System.out.println(10>3&&10<20); System.out.println(10>3&10<20); System.out.println(10>3||10<20); System.out.println(10>3|10<20); System.out.println(10>3^10<20); System.out.println(! (10>3)); System.out.println(true&&false); System.out.println(false&false); System.out.println(false||true); System.out.println(false|true); System.out.println(false^true); System.out.println(! false); booleanb=10>3&&10<20; System.out.println(b); } } 1.3.1&&与&的区别 短路与&&,首先判断第一个操作数(左面的算子的结果),如果值为false则不再判断第二个操作数,因为两个操作数只要有一个为假,则结果为假。 如果第一个操作数为true,在判断第二个操作数的结果。 而逻辑与&,不管第一个操作数是否为false,都会计算第二个操作数。 publicclassOperatorTest04{ publicstaticvoidmain(String[]args){ //逻辑与不管第一个操作数是否为false,都会计算第二个操作数 inti=10; intj=20; booleanb=i>j&i++<=j; System.out.println(b); System.out.println(i); //短路与先判断第一个操作数是否为false,如果第一个操作数结果为false //则不会在计算第二个操作数,所以效率较高 i=10; j=20; b=i>j&&i++<=j; System.out.println(b); System.out.println(i); } } 1.3.2||与|的区别 逻辑或与短路或的区别和短路与与逻辑与相似,逻辑或不管第一个操作数的结果是否为true都会计算第二个操作数,而短路或只要第一个操作数的结果为true,则不会在计算第二个操作数。 所以短路或和短路与一样,效率较高。 所以使用率较高并且建议使用。 1.4赋值运算符 赋值运算符: 赋值运算符 描述 = 将值赋给变量 += a+=10;等同于a=a+10; -= a-=10;等同于a=a-10; *= a*=10;等同于a=a*10; /= a/=10;等同于a=a/10; %= a%=10;等同于a=a%10; publicclassOperatorTest05{ publicstaticvoidmain(String[]args){ inti=10; i+=10; System.out.println(i); i-=10; System.out.println(i); i*=10; System.out.println(i); i/=10; System.out.println(i); i%=10; System.out.println(i); } } 1.4.1基本赋值运算符与扩展赋值运算符之间的区别 通过下面的例子说明基本赋值运算符和扩展赋值运算符之间的区别,主要涉及的是byte、short和char类型变量的赋值运算,使用扩展赋值运算符可能会损失精度。 publicclassOperatorTest06{ publicstaticvoidmain(String[]args){ //字面值没有超出byte类型的取值范围,直接赋值 byteb=10; //编译无法通过,因为byte类型的变量先转换成int类型在进行计算 //所以运算结果是int类型,而变量b是byte类型,需要进行强制类型转换 //b=b+20; //编译通过,说明扩展赋值运算符没有将byte类型变量b转换成int类型 //并没有改变运算结果类型,结果还是byte类型,但是需要注意的是 //可能会损失精度 b+=20; //编译通过,但是精度损失严重,因为byte类型的上限值是128 b+=5000; } } 1.5字符串连接运算符 “+”符既可以进行算术运算有可以做字符串连接符,那么在什么情况进行算术运算! 在什么情况下进行字符串连接! 1.做加法运算(+号两边只要都是数值类型,一定是加法运算) 2.字符串连接(+号两边任意一端只要是字符串类型,则一定是字符串连接) publicclassOperatorTest07{ publicstaticvoidmain(String[]args){ Strings="PI="+3.14; System.out.println(s);//PI=3.14 inti=10; intj=20; System.out.println("i+j="+i+j);//i+j=1020 System.out.println("i+j="+(i+j));//i+j=30 System.out.println(i+"+"+j+"="+(i+j));//10+20=30 } } 1.6条件运算符 条件运算符是java语言中的三元运算,格式如下: 表达式1? 表达式2: 表达式3 表达式1必须是布尔表达式,结果只能是true或false,如果表达式1为true则返回表达式2的值,否则输出表达式3的值。 通常情况下,表达式2和表达式3的类型相同,可以将条件运算符运算结果赋值给一个变量,注意: 变量的类型要和表达式2和表达式3的类型相同。 publicclassOperatorTest08{ publicstaticvoidmain(String[]args){ inti=10>5? 0: 1; System.out.println(i); booleanb=10%4==0? true: false; System.out.println(b); } } 二、Java控制语句 在Java中控制语句可以分为以下三类。 1.控制选择结构语句或分支语句 if语句 ifelse语句 switch(int) 2.控制循环结构语句 for循环语句 while循环语句 dowhile循环语句 3.改变控制语句顺序 break语句 continue语句 return语句 下面对不同类别的控制语句分别进行说明。 2.1选择结构语句或分支语句 2.1.1if语句 单一的if语句只有一个执行分支,语法结构如下。 if(布尔表达式){ 语句块; } 当布尔表达式为true时,才会执行if语句内的语句块,当语句块内的语句执行结束后,接着执行if语句后面的语句,顺序向后执行。 如果布尔表达式为false,程序执行流程会跳过if语句继续执行后面的语句。 如果if语句中的语句块中只有一条语句,可以省略大括号。 if(布尔表达式) 一条语句; 但是为了程序的可读性更好,建议使用大括号将语句括起来。 publicclassIfElseTest01{ publicstaticvoidmain(String[]args){ inta=10; intb=5; if(a>b){ System.out.println("变量a大于变量b"); } if(a%b==0){ System.out.println("变量a可以被变量b整除"); } if(a-b>0) System.out.println("变量a大于变量b"); //System.out.println("如果多于一条语句,要加大括号"); if(true) System.out.println("这条语句一定会执行"); } } 2.1.2ifelse语句 语法结构有下面几种情况。 第一种情况 if(布尔表达式){ 语句块; }else{ 语句块; } 当if布尔表达式为true时,执行if后面的语句块,表达式为false时,执行else后面的语句块。 第二种情况 if(布尔表达式){ 语句块; }elseif(布尔表达式){ 语句块; }elseif(布尔表达式){ 语句块; } 点if表达式为true时,执行if后面的语句块。 当表达式为false时,会接着判断else后面的if中的布尔表达式的值是否为true,如果为true,那么执行if后面的语句块,否则继续判断下面else后面的if布尔表达式的值是否为true,如果为true,则执行if后面的语句块,执行结束后继续执行if分支语句后面的语句。 如果为false,则直接执行if分支语句后面的语句。 第三种情况 if(布尔表达式){ 语句块; }elseif(布尔表达式){ 语句块; }elseif(布尔表达式){ 语句块; }else{ 语句块; } 第三种情况和第二种情况和类似,不同的是在最后还有一个else语句块。 判断从上向下,先判断布尔表达式的值,根据布尔表达式的值决定执行不同的分支语句。 需要注意的是,if语句中只要有一个分支语句块被执行,则整个if语句结束,并执行后面的语句。 上面的三种结构中第一种和第三种方式中可以保证一定会有一个分支语句被执行,因为在语句的最后都有else语句。 publicclassIfElseTest02{ publicstaticvoidmain(String[]args){ inta=10; intb=5; if(a>b){ System.out.println("变量a大于变量b"); }else{ System.out.println("变量a小于变量b"); } a=15; b=4; if(a%b==0){ System.out.println("变量a可以被变量b整除"); }else{ System.out.println("变量a不可以被变量b整除"); } booleanbo=false; if(bo){ System.out.println("布尔表达式的值为true"); }else{ System.out.println("布尔表达式的值为false"); } } } 多重分支的例子。 publicclassIfElseTest03{ publicstaticvoidmain(String[]args){ intscore=90; if(score>=0&&score<60){ System.out.println("不及格"); }elseif(score==60){ System.out.println("及格"); }elseif(score>60&&score<80){ System.out.println("中"); }elseif(score>=80&&score<90){ System.out.println("良"); }else{ System.out.println("优"); } //下面的方式也可以 Stringinfo="优"; if(score>=0&&score<60){ info="不及格"; }elseif(score==60){ info="及格"; }elseif(score>60&&score<80){ info="中"; }elseif(score>=80&&score<90){ info="良"; } System.out.println(info); } } 需求: 同样实现上面例子的功能,但是要求: 0~6为不及格,6~7为及格,7~8为良好,8~9为优,9以上为非常好,使用if….else多重语句实现。 代码实现: 2.1.3switch语句 switch分支语句的语法格式如下。 switch(int类型的变量){ caseint类型的值: 语句块; break; caseint类型的值: 语句块; break; caseint类型的值: 语句块; caseint类型的值: 语句块; break; default: 语句块; } 当程序执行到switch语句是,首先要判断switch后面是否是int类型的变量,如果不是,编译不能通过。 否则,从上向下判断int类型的值和哪个case后面的值匹配,如果找到匹配的case,则执行case下面的语句块,如果没有找到则执行default后面的语句块。 需要注意的是,case语句块中如果存在break,当执行到break时,程序的执行流程会跳出switch执行后面的语句,如果case中没有break,则会发生case穿透现象,继续执行case分支后面的case语句,直到遇到break,才会跳出switch语句。 另外,break语句和default默认分支语句可以没有,下面通过例子说明。 publicclassSwitchTest01{ publicstaticvoidmain(String[]args){ //编译不能通过,switch接受的类型为int类型 //longscore=90; intscore=90; switch(score){ case100: System.out.println("OK"); } } } 需要注意,byte、short和char类型可以作为变量的类型,因为这些类型会自动转换成int类型,如下面的例子。 publicclassSwitchTest02{ publicstaticvoidmain(String[]args){ charc='A'; switch(c){ case'A': System.out.println("优"); break; case'B': System.out.println("良"); break; case'C': System.out.println("中"); break; case'D': System.out.println("及格"); break; default: System.out.println("不及格"); } } } switch的值的类型可以是byte、short、int和char类型。 不能是boolean、long、double和float类型。 publicclassSwitchTest03{ publicstaticvoidmain(String[]args){ //bytescore=80; //shortscore=90; intscore=70; switch(score){ case90: System.out.println("优"); break; case80: System.out.println("良"); break; case70: System.out.println("中"); } } } 如果case语句中没有break语句,将会发生case穿透现象,继续执行下面的case语句,直到遇到break。 publicclassSwitchTest04{ publicstaticvoidmain(String[]args){ intscore=90; switch(score){ case90: System.out.println("优");//因为没有break语句,所以会继续向下执行 case80: System.out.println("良");//会执行,直到遇到break语句,跳出switch break; case70: System.out.println("中"); } } } case语句可以合并,将多个case拦截执行相同的语句块,如下例子。 publicclassSwitchT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 中的 运算
![提示](https://static.bdocx.com/images/bang_tan.gif)