Java运算符
- 算术运算符:+ 加 、 - 减、* 乘、 / 除 、% 取余 、++自增 、–自减
- 赋值运算符:+= 、 -= 、 *= 、 /= 、 %= 、
- 比较运算符(关系运算符):> 、 < 、 >= 、 <= 、== 、 != 、
- 逻辑运算符:& 、| 、&& 、 || 、! 、
- 字符串连接符: +
- 三目运算符(三元运算符): (条件)?数据1:数据2
分支结构 if
选择结构switch
选择结构switch
- 总结:
- 1.变量a的类型支持byte、short、char、int、String
- 2.会拿着变量a的值依次与每个case后的值作比较,如果不加break,会向后穿透所有case,包括default
- 3.如果设置了保底选项default,并且前面没有任何case被匹配到的话,就执行default
- 4.break和default是可选项,根据具体的业务决定加不加
- switch结构的注意事项
- switch 语句中的变量类型可以是: byte、short、int 、char、String(jdk1.7以后支持)
- switch 语句可以拥有多个 case 语句
- 每个 case 后面跟一个要比较的值和冒号,且此值的数据类型必须与变量的数据类型一致
- 当变量值与 case 语句值相等时,开始执行此case 语句的内容,执行完会判断此行代码是否有break,如果有,结束执行,如果没有,会继续向后执行穿透所有case,包括default
- switch 语句可以包含一个 default 分支,该分支一般是写在switch 语句的最后
- 如果在default之前的case有break,则default不会执行
循环结构
1.for循环
-
结构:
for(初始语句;循环条件;循环控制语句----更改条件){
循环体;
}
今日案例
1.案例一
package cn.tedu.basic;
import java.util.Scanner;
/**本类用于练习分支结构*/
public class TestIf {
public static void main(String[] args) {
//需求:接收用户输入的数据 只要输入的数据是66,就打印恭喜
System.out.println("请输入数据:");
int a = new Scanner(System.in).nextInt();
if(a==66) {
System.out.println("恭喜你猜对了");
}
if(a!=66){
System.out.println("没猜对");
}
}
}
2.案例二
package cn.tedu.basic;
import java.util.Scanner;
/**本类用于测试三元运算符*/
public class TestMaxNumber {
public static void main(String[] args) {
//1.提示并接收用户输入的两个整数a和b
System.out.println("请您输入要比较的第一个数:");
int a = new Scanner(System.in).nextInt();
System.out.println("请您输入要比较的第二个数:");
int b = new Scanner(System.in).nextInt();
//比较接收到的两个数,使用三元运算符
/**1?2:3
* 1 是表达式 如果1结果为true 结果取2位置 如果1结果为false 结果取3位置
* */
int max ;//定义变量保存最大值
max = a>b?a:b;//将a、b之间的大值赋值给max
System.out.println("两个数的最大值为:"+max);
/**思考题:如何让用三元运算符求三个数的最大值*/
}
3.案例三
package cn.tedu.basic;
/**本类用于测试运算符*/
public class TestOperator {
//创建入口函数main
public static void main(String[] args) {
//1.测试除法与取余数
System.out.println(25/10);//2
System.out.println(25%10);//5
//2.练习一 获取一个两位数的十位与个位
int a = 59;
System.out.println(59/10);//打印十位:5
System.out.println(59%10);//打印个位:9
//3.练习二:获取百位,十位,个位
int b = 129;
System.out.println(129/100);//百位 1
System.out.println((129/10)%10);//十位 2
System.out.println(129%10);//个位 9
//4.测定自增自减运算符
/**
* 前缀式:符号在前:++a --a ,先改变变量本身的值,再使用
* 后缀式:符号在后:a++ a-- ,先使用,再改变变量本身的值
* ++:相当于给变量本身+1
* --:相当于给变量本身-1
* */
System.out.println("我是一个无情的分界线");
int z = 1;
System.out.println(z+4);//5
System.out.println(z);//1
/**普通的四则运算并不会改变变量本身的值
* 自增自减运算符才会改变变量本身的值*/
z = z+10;//除非将四则运算的结果再重新赋值给变量
System.out.println(z);//这个时候z的值才为11
int a1=1;
System.out.println(++a1);//2
System.out.println(a1);//2
int b1=1;
System.out.println(b1++);//1
System.out.println(b1);//2
int c=1;
System.out.println(--c);//0
System.out.println(c);//0
int d = 1;
System.out.println(d--);//1
System.out.println(d);//0
System.out.println(c);//0
System.out.println(--c-c-c--);//1 /**--c = -1 c=-1 -(-1) c-- =-1 (-1)-(-1)-(-1)*/
System.out.println(c);//-2
}
}
4.案例四
package cn.tedu.basic;
/**本类用于测试逻辑运算符*/
public class TestOperator2 {
public static void main(String[] args) {
/**与:全真才真*/
System.out.println("测试单与");
System.out.println(true&true);//true
System.out.println(true&false);//false
System.out.println(false&true);//false
System.out.println(false&false);//false
System.out.println("测试双与");//短路与 当左边为false 结果为false 右边不运算
System.out.println(true&&true);//true
System.out.println(true&&false);//false
System.out.println(false&&true);//false
System.out.println(false&&false);//false
/**或:全假才假*/
System.out.println("测试单或");
System.out.println(true|true);//true
System.out.println(true|false);//true
System.out.println(false|true);//true
System.out.println(false|false);//false
System.out.println("测试双或");//短路或 当左边为true 结果为true 右边不运算
System.out.println(true||true);//true
System.out.println(true||false);//true
System.out.println(false||true);//true
System.out.println(false||false);//false
}
}
5.案例五
package cn.tedu.basic;
import java.util.Scanner;
/**本类用作运算符综合案例
* 需求:接受用户输入的年份 判断是平年还是闰年*/
//闰年满足条件:1.能被400整除 2.能被4整除且不能被100整除
public class TestYear {
public static void main(String[] args) {
//1.提示并接收用户输入的年份
System.out.println("请输入年份:");
int year = new Scanner(System.in).nextInt();
//2.定义一个变量用来保存最终结果
String result = "平年";//结果默认是平年,假设每年都是平年
//3.判断用户输入的年份是否符合闰年的条件
/**解决方案一*/
// if(year%400==0) {
// result="闰年";
// }
// if(year%4==0&&year%100!=0) {
// result="闰年";
// }
/**解决方案二*/
//if(条件1||条件2){是闰年}
//if(条件1||(小条件1&&小条件2)){是闰年}
if((year%400==0)||(year%4==0&&year%100!=0)) {
result="闰年";
}
//4.将最终结果输出
System.out.println(year+"年是"+result);
}
}
6.案例六
package cn.tedu.basic2;
import java.util.Scanner;
/**本类用于练习嵌套分支结构*/
//需求:接收用户输入的原价,满10000打5折,满8000打7折,满5000打9折
public class TestDiscount {
public static void main(String[] args) {
//1.提示并接收用户输入的原价
System.out.println("请您输入商品原价:");
double price = new Scanner(System.in).nextDouble();
//2.定义一个变量 保存打折后的价格
double count = price;//初始值是商品原价
//3.判断用户打折的段位
if(price>=10000) {
count=price*0.5;
}else if(price>=8000) {
count = price*0.7;
}else if(price>=5000) {
count=price*0.9;
}
/*
* 在嵌套分支结构中,要将比较难完成的条件写在上边,起到筛选过滤的作用,代码比较简单
* *****/
//输出结果
System.out.println("您实际应支付:"+count);
}
}
7.案例七
package cn.tedu.basic2;
/**本类用于测试for循环结构*/
public class TestFor {
public static void main(String[] args) {
/*
* for(int i=0;i<=10;i++) { System.out.println(i); }
*/
//需求:输出100次 小可爱们下午好~~
/*
* for(int i =1;i <=100;i++) { System.out.println("小可爱们下午好~~"); }
*/
//需求:打印1~10
//1 2 3 4 5 6 7 8 9 10
//从那开始:1
//到那结束:10
//怎么变化:++
for(int i = 1;i<=10;i++) {
System.out.println(i);
}
//打印10~1
//从那开始:10
//到那结束:1
//怎么变化:--
for(int a = 10;a>=1;a--) {
System.out.println(a);
}
//需求:打印 8,88,888,8888
//从哪开始:8
//到哪结束:8888
//怎么变化:*10+8
for(int i =8;i<=8888;i=i*10+8) {
System.out.print(i+",");
}
}
}
8.案例八
package cn.tedu.basic2;
import java.util.Scanner;
/**本类用于练习嵌套分支结构*/
//需求:接受输入的学生成绩,判断档位并输出
//90分以上---优秀
//80-89---良好
//70-79---中等
//60-69---及格
//60分以下---不及格
public class TestScore {
public static void main(String[] args) {
//1.提示并接受学生成绩
System.out.println("请输入你的成绩:");
int score = new Scanner(System.in).nextInt();
//2.判断学生成绩并直接输出结果
//要求:1.在分支中直接输出结果 比如打印:优秀!
//要求:2.要使用else
/**为了增强程序的健壮性,如果用户输入的数据不符合规则,就结束*/
// if(score>100||score<0) {//用户输入的数据不正确,结束
// System.out.println("您输入的数据不合法,无法判断!");
// }else {//用户输入的数据不正确,判断
// if(score>=90) {
//
// System.out.println("优秀!");
// }else if(score>=80) {
// System.out.println("良好!");
// }else if(score>=70) {
// System.out.println("中等!");
// }else if(score>=60){
// System.out.println("及格!");
// }else if(score>=0){
// System.out.println("不及格");
// }
// }
//
String a = "不及格";
if(score>=90&&score<=100) {
a="优秀!";
System.out.println("您的分数"+score+a);
}else if(score>=80&&score<90) {
a="良好";
System.out.println("您的分数"+score+a);
}else if(score>=70&&score<80) {
a="中等";
System.out.println("您的分数"+score+a);
}else if(score>=60&&score<70){
a ="及格";
}else if(score>=0&&score<60){
System.out.println("您的分数"+score+a);
}else {
System.out.println("您输入的不是正确的分数!");
}
}
}
9.案例九
package cn.tedu.basic2;
/**本类用于练习选择结构switch
* 总结:
* 1.变量a的类型支持byte、short、char、int、String
* 2.会拿着变量a的值依次与每个case后的值作比较,如果不加break,会向后穿透所有case,包括default
* 3.如果设置了保底选项default,并且前面没有任何case被匹配到的话,就执行default
* 4.break和default是可选项,根据具体的业务决定加不加
* */
public class TestSwitch {
public static void main(String[] args) {
//1.定义一个变量
int a = 3;
//2.完成switch结构
switch (a) {
case 1 :System.out.println(1);break;
case 2 :System.out.println(2);break;
case 3 :System.out.println(3);break;
case 4 :System.out.println(4);break;
case 5 :System.out.println(5);break;
case 6 :System.out.println(6);break;
case 7 :System.out.println(7);break;
default:System.out.println(0);//默认选项,不加break
}
String day ="星期二";
switch(day) {
case "星期一" :System.out.println("星期一吃北京烤鸭");break;
case "星期二" :System.out.println("星期二吃武汉藕汤");break;
case "星期三" :System.out.println("星期三吃南昌拌粉");break;
case "星期四" :System.out.println("星期四吃兰州拉面");break;
case "星期五" :System.out.println("星期五吃成都串串香");break;
case "星期六" :System.out.println("星期六吃潮汕砂锅粥");break;
case "星期日" :System.out.println("星期日吃杭州小笼包");break;
default:System.out.println("想吃点啥吃点啥吧");
}
}
}