FUNDAMENTAL Unit03 运算符和表达式 、 分支结构
来源:互联网 发布:php gzip 解压缩 编辑:程序博客网 时间:2024/06/05 16:12
1.运算符:
1)算术:+,-,*,/,%,++,–
// 输出255除以8所得的余数。 int n = 225; System.out.println(n % 8); //结果为1
Java的自增运算符(++)和自减运算符(–)继承自C++,可以使变量的值加1或减1,但其写在变量前和变量后有不同的效果:
如果写在变量前,表示在使用这个变量之前加1或减1
如果写在变量后,表示这个变量使用完之后再加1或减1
int a = 10, b = 20;int c1 = a++; // 先将a的值赋给c1,然后a再自加 int c2 = ++b; // 先将b的值自加,然后再赋给c2System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);// 输出的结果为: a=11, b=21, c1=10, c2=21
2)关系:>,<,>=,<=,==,!= boolean
int max = 10; int num = 9; boolean b1 = max > 15; boolean b2 = num%2 == 1; System.out.println(b1); // 结果为false System.out.println(b2); // 结果为true
3)逻辑:&&,||,! boolean
关于“短路逻辑”的问题
Java逻辑运算中的&&和||有短路的特性,当第一个关系表达式就可以判断出整个表达式的结果时,就不会再去判断后面的第二个表达式。
对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false;
对于“||”,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。
示例代码如下所示:
int i = 100, j = 200;boolean b1 = (i > j) && (i++ > 100);System.out.println(b1); // 结果为:falseSystem.out.println(i); // 结果为:100,发生短路,i++不会被执行 boolean b2 = i > 0 || j++ > 200;System.out.println(b2); // 结果为:trueSystem.out.println(j); // 结果为:200,发生短路,j++不会被执行
4)赋值:=,+=,-=,*=,/=,%=
示例代码如下:
int num = 18, index;System.out.println(index = num % 5); // 结果为:3,赋值表达式本身也有值System.out.println(index); // 结果为:3int a, b, c;a = b = c = 100; // c=100 整个表达式的值为100, 将其赋值给b,同样b=(c=100)整个表达式的值也为100,然后有将这个值赋给了a,所以a 的值也是100。
5)字符串连接:+
示例代码
int a = 100;String msg = "a=" + a;System.out.println(msg); //a=100,字符串拼接msg = "" + 100 + 200;System.out.println(msg); //结果为: 100200,””+100,为字符串100再拼上200为100200msg = 100 + 200 + "";System.out.println(msg); //结果为:300,100+200为算术运算结果为300,再加上””为300
6)条件(三目)运算:boolean?数1:数2
条件运算符的规则如下:
1.先计算boolean表达式;
2.如果boolean表达式的值为true,整个表达式的值为表达式1的值;
3.如果boolean表达式的值为false,整个表达式的值为表达式2的值。
示例代码如下:
int a = 100, b = 200;int flag = a > b ? 1 : -1; //因为a>b为false,所以整个表达式的值为-1,将其赋给flag,即:flag的值为-1。
2.分支结构:
1)if结构:1条路
语句0;if(逻辑表达式){ 语句1; 语句2;}语句3;
如上语句的执行步骤如下所示:
步骤一:执行语句0;
步骤二:判断逻辑表达式的值,此表达式的值结果为boolean类型,即true或者false。此处可以是关系表达式也可以是逻辑表达式。
若值为true,则执行if语句块中的语句;
若值为false,则跳过if语句块;
步骤三:执行语句3语句。
2)if…else结构:2条路
语句0;if(逻辑表达式){ 语句块1;} else { 语句块2;}语句3;
如上语句的执行步骤如下所示:
步骤一:执行语句0;
步骤二:判断if逻辑表达式的值:
若值为true,则执行语句块1;
若值为false,则执行语句块2;
步骤三:执行语句3语句。
3)if…else if结构:多条路
在java程序中,当程序的分支数大于2时,可以用if-else嵌套的方式解决,即:else语句块中又包含if语句(或if-else语句)
4)switch…case结构:多条路
优点:效率高、结构清晰
缺点:整数、相等
break:退出switch
switch(整型表达式) { case 整型常量值1: //入口1 语句1; 语句2; case 整型常量值2: //入口2 语句3; …… default: //默认入口 语句n; }
任何复杂的程序逻辑都可以通过三种结构来实现:
1)顺序结构:从上往下逐行执行,每句必走
2)分支结构:有条件的执行,并非每句必走
3)循环结构:
闰年的判断公式:
1.能被4整除并且不能被100整除
或者
2.能被400整除
例:(year%4==0 && year%100!=0) || year%400==0
课堂代码整理:
package day03;import java.util.Scanner;//年龄判断程序public class AgeRange { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入年龄:"); int age = scan.nextInt(); System.out.println(age>=18 && age<=50); }}
package day03;import java.util.Scanner;//柜台收银程序public class Cashier { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入单价:"); double unitPrice = scan.nextDouble(); System.out.println("请输入数量:"); double amount = scan.nextDouble(); System.out.println("请输入金额:"); double money = scan.nextDouble(); //计算总价(单价*数量) double totalPrice = unitPrice*amount; if(totalPrice>=500){ //满500 totalPrice*=0.8; //打8折 } if(money>=totalPrice){ //够 double change = money-totalPrice; //计算找零(给的钱-总价) System.out.println("总价为:"+totalPrice+",找零为:"+change); }else{ //不够 System.out.println("ERROR!您给的钱不够"); } }}
package day03;import java.util.Scanner;//命令解析程序public class CommandBySwitch { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请选择功能: 1.显示全部记录 2.查询登录记录 0.退出"); int command = scan.nextInt(); switch(command){ case 1: System.out.println("显示全部记录"); break; case 2: System.out.println("查询登录记录"); break; case 0: System.out.println("欢迎下次再来"); break; default: System.out.println("输入错误"); } }}
package day03;//分支结构的演示public class IfDemo { public static void main(String[] args) { int num = 2; switch(num){ //byte,short,char,int case 1: //相当于if(num==1) System.out.println(111); break; case 2: //以此为入口 System.out.println(222); break; //退出switch case 3: System.out.println(333); break; default: //所有case都未匹配时执行 System.out.println(666); } /* int num = 5; if(num%2==0){ System.out.println(num+"是偶数"); }else{ System.out.println(num+"是奇数"); } System.out.println("over"); */ /* int num = 5; if(num%2==0){ System.out.println(num+"是偶数"); } System.out.println("over"); */ }}
package day03;import java.util.Scanner;//闰年的判断public class LeapYear { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入年份:"); int year = scan.nextInt(); boolean flag = (year%4==0 && year%100!=0) || year%400==0; String str = flag ? year+"是闰年" : year+"不是闰年"; System.out.println(str); }}
package day03;//运算符的演示public class OperDemo { public static void main(String[] args) { /* * 6.条件(三目)运算符: * 1)语法: * boolean?数1:数2 * 2)执行过程: * 计算boolean的值: * 若为true,则整个表达式的结果为数1 * 若为false,则整个表达式的结果为数2 */ /* int a=5,b=8; int max = a>b?a:b; System.out.println("max="+max); */ /* * 5.字符串连接运算符: * 1)+: * 1.1)两边都是数字,则做加法运算 * 1.2)两边若出现字符串,则做字符串连接 */ /* System.out.println(10+20+""+30); //"3030" System.out.println(10+20+30+""); //"60" System.out.println(""+10+20+30); //"102030" */ /* int age = 37; System.out.println("age="); //age= System.out.println(age); //37 System.out.println("age="+age); //age=37 System.out.println("我的年龄是:"+age); System.out.println("我今年"+age+"岁了"); */ /* * 4.赋值运算符: * 1)简单赋值运算符:= * 2)扩展赋值运算符:+=,-=,*=,/=,%= */ /* int a = 5; a += 10; //相当于a=a+10 System.out.println(a); //15 a *= 2; //相当于a=a*2 System.out.println(a); //30 a /= 6; //相当于a=a/6 System.out.println(a); //5 */ /* * 3.逻辑运算符: * 1)&&:短路与(并且),两边都为真则为真,见false则false * ----第1个数为false时,发生短路(后面的不执行了) * ||:短路或(或者),有一边为真则为真,见true则true * ----第1个数为true时,发生短路(后面的不执行了) * !:逻辑非(取反),非真则假,非假则真 * 2)逻辑运算是建立在关系运算基础之上的, * 逻辑运算的结果也是boolean型 */ /* int a=5,b=10,c=5; boolean b4 = a<b || c++>2; System.out.println(b4); //true System.out.println(c); //5,发生短路了 */ /* boolean b3 = a>b && c++>2; System.out.println(b3); //false System.out.println(c); //5,发生短路了 */ /* boolean b2 = !(a>b); System.out.println(b2); //!false=true System.out.println(!(a<b)); //!true=false */ /* System.out.println(a>=b || c<b); //false||true=true System.out.println(a<=b || c>b); //true||false=true System.out.println(a==c || a<b); //true||true=true System.out.println(a!=c || a>b); //false||false=false */ /* boolean b1 = a>=b && c<b; System.out.println(b1); //false&&true=false System.out.println(a<=b && c>b); //true&&false=false System.out.println(a!=c && a>b); //false&&false=false System.out.println(a==c && a<b); //true&&true=true */ /* * 2.关系运算符: * 1)>(大于),<(小于) * >=(大于或等于),<=(小于或等于) * ==(等于),!=(不等于) * 2)关系运算的结果为boolean型, * 关系成立则为true,关系不成立则为false */ /* int a=5,b=10,c=5; boolean b1 = a>b; System.out.println(b1); //false System.out.println(c<b); //true System.out.println(b>=c); //true System.out.println(a<=c); //true System.out.println(a==c); //true System.out.println(a!=c); //false */ /* * 1.算术运算符:+,-,*,/,%,++,-- * 1)%:取模/取余,余数为0即为整除 * 2)++/--:自增1/自减1,可以在变量前也可以在变量后 * 2.1)单独使用时,在前在后无差别 * 2.2)被使用时,在前在后有差别 * a++的值为a * ++a的值为a+1 */ /* int a=5,b=5; //1)输出a--的值5 2)a自减1变为4 System.out.println(a--); //5 System.out.println(a); //4 //1)输出--b的值4 2)b自减1变为4 System.out.println(--b); //4 System.out.println(b); //4 */ /* int a=5,b=5; int c = a++; //1)将a++的值5赋值给c 2)a自增1变为6 int d = ++b; //2)将++b的值6赋值给d 2)b自增1变为6 System.out.println(a); //6 System.out.println(b); //6 System.out.println(c); //5 System.out.println(d); //6 */ /* int a=5,b=5; a++; //相当于a=a+1 ++b; //相当于b=b+1 System.out.println(a); //6 System.out.println(b); //6 */ /* System.out.println(5%2); //1,商2余1 System.out.println(8%2); //0,商4余0,整除 System.out.println(2%8); //2,商0余2 System.out.println(8.5678%2); //0.5678 */ }}
package day03;import java.util.Scanner;//成绩等级判断public class ScoreLevel { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scan.nextInt(); if(score<0 || score>100){ System.out.println("成绩不合法"); }else if(score>=90){ //score>=0 && score<=100 System.out.println("A-优秀"); }else if(score>=80){ System.out.println("B-良好"); }else if(score>=60){ System.out.println("C-中等"); }else{ System.out.println("D-不及格"); } }}
- FUNDAMENTAL Unit03 运算符和表达式 、 分支结构
- 运算符、表达式、分支结构
- 黑马程序员_运算表达式和多分支结构
- 运算符,分支结构.
- 运算符与分支结构
- 运算符与分支结构
- Java基础03-运算符和分支结构
- RE:JAVA学习-运算符和分支结构
- C2-分支结构及运算符
- day03_运算符_分支结构_20150803
- 2.4 分支结构-条件运算符
- 运算符和分支语句
- Java入门(1) —— 变量、运算符、分支结构和程序员思维的理解
- Java入门(1) —— 变量、运算符、分支结构和程序员思维的理解
- JAVA笔记二(07-09 运算符、表达式和分支语句)
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
- 表达式和运算符
- 运算符和表达式
- Spring 延迟加载
- SpringMVC DispatcherServlet重写、自定义拦截器拦截器(一)
- 谈一谈自己对依赖、关联、聚合和组合之间区别的理解
- Android平台Camera实时滤镜实现方法探讨(三)--通过Shader实现YUV转换RBG
- HDU 4857 逃生 && Codeforces 825 E. Minimal Labels 逆向拓扑序+优先队列
- FUNDAMENTAL Unit03 运算符和表达式 、 分支结构
- 深入探究connect函数
- 共性问题
- 迈出从3K到1W的重要一步——掌握设计模式
- Struts2 Validation验证框架错误提示信息的显示位置
- BZOJ 1003 [ZJOI2006] 物流运输
- MySQL 数据类型
- bzoj 2761 [JLOI2011]不重复数字
- 安装单机版zookeeper