day3 java运算符与流程控制
2018-06-18 02:30:11来源:未知 阅读 ()
赋值运算
赋值运算符:=,+=,-=,×=,/=,%=
class fuzhiyunsuan{ public static void main(String[] args){ int i1 = 10; i1 += 3;//即i1 = i1 +3,但是这两者是有区别的 //例如下面 short s = 10; //s = s + 3;编译是无法通过的,会损失精度 //s = (short)(s + 1);//强制修改精度,不建议 s += 1;//即可以实现运算,又不会更改s的数据类型; System.out.println(s); /* 赋值运算符:=,+=,-=,×=,/=,%= */ //切记在java中=是赋值操作。 boolean b1 = false; if(b1=true) System.out.println("结果为真"); else System.out.println("结果为假"); } }
root@debian:/home/jeff/java_coding/day003# java fuzhiyunsuan 11 结果为真
因为使用i = i+1可能无法通过编译,所以使用+=的方式赋值更好一些。还有在java中=是赋值,判断相等使用==。
逻辑运算符

class logiccal{ public static void main(String[] args){ boolean a = true; boolean b = false; 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); System.out.println(a ^ b); } }
root@debian:/home/jeff/java_coding/day003# java logiccal false false true true false true
&与&&的区别
&&是短路运算的与,即a&&b,当a为false是无论b是真还是假,结果都是假,故不再运行b,直接跳出计算。
class logicdiff{ public static void main(String[] args){ boolean b = false; int i1 = 10; if(b & (i1++) > 0){ System.out.println("good"); }else{ System.out.println("bad"); } System.out.println(i1); int i2 = 10; if(b && (i2++) > 0){ System.out.println("good"); }else{ System.out.println("bad"); } System.out.println(i2); } }
root@debian:/home/jeff/java_coding/day003# java logicdiff bad 11 bad 10
在此处即&左边为false,右边i++依然计算了,结果+1,&&右边未+1。更建议使用&&。
class logicdiff{ public static void main(String[] args){ boolean b = false; int i1 = 10; if(b & (10 / 0 == 0){ System.out.println("good"); }else{ System.out.println("bad"); } System.out.println(i1); int i2 = 10; if(b && 10/0 == 0){ System.out.println("good"); }else{ System.out.println("bad"); } System.out.println(i2); } }
此处&在编译过程中会报错,但是&&则会通过编译。
|与||同理。
位运算

class bitcal{ public static void main(String[] args){ int i1 = 31; System.out.println(i1<<3); System.out.println(i1<<28); System.out.println(i1>>2); System.out.println(i1>>>2); int i2 = -31; System.out.println(i2>>2); System.out.println(i2>>>2); } }
root@debian:/home/jeff/java_coding/day003# java bitcal
248
-268435456
7
7
-8
1073741816
位移运算可能导致精度丢失。无符号位运算在负数时变化较大。
两个变量换位问题
class exchange{ public static void main(String[] args){ int m = 111; int n = 233; System.out.println("m:"+m+"n:"+n); //1.提供中间变量 int temp = m; m = n; n = temp; System.out.println("m:"+m+"n:"+n); //2.m,n较大可能会损失精度 m = m+n; n = m-n; m = m-n; System.out.println("m:"+m+"n:"+n); //3.位运算 m = m^n; n = m^n; m = m^n; System.out.println("m:"+m+"n:"+n); } }
运行结果
root@debian:/home/jeff/java_coding/day003# java exchange m:111n:233 m:233n:111 m:111n:233 m:233n:111
三元表达式
格式:(条件表达式)?表达式1:表达式2;
当条件表达式为真,则运算结果为表达式1,当条件表达式为假,则运算结果为表达式2。
表达式1和2应当为同种类型。
三元表达式与if判断的差别为,三元表达式简化了if语句,三元表达式必须返回一个结果,if后面的代码快可以有多个语句。
class sanyuan{ public static void main(String[] args){ int i = 10; int j = 20; int max = (i > j)?i:j; System.out.println("较大值是"+max); String str = (i > j)?"i大":(i == j)?"相等":"j大"; System.out.println(str); } }
运算结果
root@debian:/home/jeff/java_coding/day003# java sanyuan
较大值是20
j大
流程控制
顺序结构
程序自上而下,逐行运行。
分支结构
根据条件选择某条分支运行
循环结构,根据循环条件重复性的执行某段代码。
if语句的三种格式
if(true){执行代码块;}
if(条件表达式){执行代码块;}
else{执行代码块;}
if(条件表达式){执行代码块;} else if(条件表达式){执行代码块;} 。。。 else{执行代码块;}
import java.util.Scanner; class score{ public static void main(String[] args){ //创建一个scanner对象,用于键入数字 Scanner uscore = new Scanner(System.in); System.out.println("请输入考试成绩"); //调用此对象相应方法,完成键盘输入的值的获取 //next():表示从键盘获取一个字符串,int表示键入的是整型数值用于比较 int str = uscore.nextInt(); System.out.println("你的成绩是"+str); if(str > 100 || str < 0){ System.out.println("你输入的成绩有误"); } else{ if(str == 100){ System.out.println("第一名"); }else if(str > 80 && str<=99){ System.out.println("优秀"); }else if(str >=60 && str<= 80){ System.out.println("一般"); }else{ System.out.println("要加油啊"); } } } }
root@debian:/home/jeff/java_coding/day003# java score 请输入考试成绩 13 你的成绩是13 要加油啊 root@debian:/home/jeff/java_coding/day003# java score 请输入考试成绩 100 你的成绩是100 第一名 root@debian:/home/jeff/java_coding/day003# java score 请输入考试成绩 76 你的成绩是76 一般
switch语句
switch(变量){ case 值1: case 值2: ... default: }
class switch1{ public static void main(String[] args){ int i = 1; switch(i){ case 0: System.out.println("零"); case 1: System.out.println("一"); case 2: System.out.println("二"); default: System.out.println("其他"); } } }
运行结果
root@debian:/home/jeff/java_coding/day003# java switch1
一
二
其他
没有break退出循环体,那么匹配到分支以后还会继续执行其下的case语句。
default是可选的,而且位置是灵活的。
class switch2{ public static void main(String[] args){ int i = 5; switch(i){ default: System.out.println("其他"); case 0: System.out.println("零"); case 1: System.out.println("一"); case 2: System.out.println("二"); } } }
运行结果
root@debian:/home/jeff/java_coding/day003# java switch2
其他
零
一
二
class switch3{ public static void main(String[] args){ int i = 5; switch(i){ default: System.out.println("其他"); break; case 0: System.out.println("零"); break; case 1: System.out.println("一"); break; case 2: System.out.println("二"); break; } } }
root@debian:/home/jeff/java_coding/day003# java switch3
其他
switch里的变量类型可以是:char,byte,short,int,枚举,String(jdk1.7)
case的条件只能是值不能是取值范围。
本节代码托管到我的github:day003。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:JDBC的批处理
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
