首页 > 数据库 >springboot 整合使用redis发布订阅功能

springboot 整合使用redis发布订阅功能

时间:2022-12-11 10:01:27浏览次数:53  
标签:语句 订阅 springboot redis System else 循环 println out

在Java中有3种流程控制结构:顺序结构、选择结构、循环结构。
顺序结构
顺序结构是指程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。

选择结构

选择结构是根据条件判断的结果来选择执行不同的代码。选择结构可以细分为单分支结构、双分支结构和多分支结构。Java提供了if控制语句和switch语句来实现选择结构。

if ; if…else
seitch

if

在Java当中,if语句属于选择结构,if语句又被称为分支语句/条件控制语句。

if语句的语法结构

if 语句的语法结构有四种编写方式:

第一种:
if(布尔表达式){
java语句;
java语句;
java语句;

}

第二种:
if(布尔表达式){
java语句;
java语句;

}else{
java语句;
java语句;

}

第三种:
if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}…

第四种:
if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else {
java语句;
java语句;

}

重点:对于Java中的if语句来说,只要有一个分支执行,整个if语句全部结束。

注意: 1. 以上的第二种编写方式和第四种编写方式都带有else分支,这两种方式可以100%保证会有分支执行。

  1. 所有控制语句都是可以嵌套使用

例:要求输入一个三位数,判断该数是不是水仙花数。

package cn.bdqn.demo01;

import java.util.Scanner;

public class Demo01 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数:");
int num = sc.nextInt();
int baiWei = num/100;
int shiWei = num/10%10;
int geWei = num%10;
//System.out.println(Math.pow(3,2));控制台输出的是3^2结果为9
if(Math.pow(baiWei, 3)+Math.pow(shiWei, 3)+Math.pow(geWei, 3)==num){
System.out.println("您输入的是水仙花数!");
}else{
System.out.println("您输入的不是是水仙花数!");
}

}

}

多分支if选择结构(if-else-if选择结构)
执行规律:

1.先判断条件1,如果条件1为true,则执行代码块1,执行完代码块1之后,结束这个if-else-if结构,继续往下执行if-else-if结构之后的代码
如果条件1为false,继续往下判断条件2,如果条件2为true,执行代码块2,执行完代码块2之后,结束这个if-else-if结构,继续往下执行if-else-if结构之后的代码
3.如果条件2为false,继续往下判断条件3,…
4.如果所有的条件都为false,就执行else里面的代码块n,执行完代码块n后,结束这个if-else-if结构,继续往下执行if-else-if结构后面代码
注意事项:
1)所有的条件不管多么简单还是多么复杂,都只能是布尔值,要么为true,要么为false
2)else可以省略不写,如果所有的条件都不满足,也没有else,则整个if-else-if结构都不会执行
3)if-else-if结构中的条件,如果下面的条件会引用上面条件的潜在值,条件是有顺序,严格的条件在上面
例:需求:

  • 对学员的考试成绩评测
  • 成绩>=80 :良好
  • 成绩>=60 :中等
  • 成绩<60 :差
  • 使用多重if选择结构实现
public static void main(String[] args) {
/*
* 需求:
* 对学员的考试成绩评测
* 成绩>=80 :良好
* 成绩>=60 :中等
* 成绩<60 :差
*
* 使用多重if选择结构实现
*
*/

Scanner sc =new Scanner(System.in);

System.out.println("请输入你的考试成绩:");
double score = sc.nextDouble();

// if(score>=80&&score<=100){
// System.out.println("良好");
// }
//
// if(score>=60&&score<80){
// System.out.println("中等");
// }
//
// if(score>=0&&score<60){
// System.out.println("差");
// }

// if(score>=80&&score<=100){
// System.out.println("良好");
// }else if(score>=60&&score<80){
// System.out.println("中等");
// }else{
// System.out.println("差");
// }

if(score>=80){
System.out.println("良好");
}else if(score>=60){
System.out.println("中等");
}else{
System.out.println("差");
}

System.out.println("继续努力.....");

}

}

练习题:根据天气(晴天/下雨)来决定是室内活动还是室外活动,根据温度来决定具体的活动:晴天30°以上,室内游泳,30°一下,室外篮球,雨天25°以上,室内游泳,雨天25°一下,在家敲代码

package cn.bdqn.demo01;

import java.util.Scanner;

public class LianXiTi {

public static void main(String[] args) {
/*
* 练习:根据天气(晴天/下雨)来决定是室内活动还是室外活动,
* 根据温度来决定具体的活动:晴天30°以上,室内游泳,30°一下,室外篮球,
* 雨天25°以上,室内游泳,雨天25°一下,在家敲代码
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入当天天气:");
String weather = sc.next();
System.out.println("请输入当天气温:");
double airTemperature = sc.nextDouble();
boolean weatherToday = weather.equals("晴天");
if(weatherToday)
//晴天
{
if(airTemperature>30){ //晴天30°以上
System.out.println("室内游泳!");
}else{ //晴天30°以下
System.out.println("室外篮球!");
}
}
//雨天
else{
if(airTemperature>25){ //雨天25°以上
System.out.println("室内游泳!");
}else{ //雨天25°以下
System.out.println("在家敲代码!");
}
}
}
}

switch语句

语法格式:

switch(表达式){
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;

default:
语句;
break;
}

switch、case、break、default是Java关键字

-->JDK1.7后,switch后的表达式可以是int、short、byte、char、枚举类型、String类型表达式。
-->case用于与表达式进行匹配。
-->break用于终止后续语句的执行。
-->default是可选的,当其他条件都不匹配时执行default。

执行规律:
1)计算switch后表达式的值。
2)将计算结果从上至下依次与case后的常量值比较。
3)如果相等就执行该常量后的代码块,遇到break语句就结束。
4)如果与任何一个case后的常量值都不匹配,就执行default中的语句。
注意事项:
1)如果case后没有break语句,程序将继续向下执行,直到遇到break语句或switch语句结束----“case穿透”。
2)case常量值不能相同。
3)default语句可以在任意位置书写,但一般写在switch结构的末尾。也可以省略不写。

练习:使用switch选择结构判断一个月份属于一年中的那个季节。(春夏秋冬)

package cn.bdqn.demo02;

import java.util.Scanner;

public class Subject17 {

public static void main(String[] args) {
/*
* 使用switch选择结构判断一个月份属于一年中的那个季节。(春夏秋冬)
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份(1-12):");
int month =sc.nextInt();

switch(month){
case 12:
// System.out.println("冬季");
// break;
case 1:
// System.out.println("冬季");
// break;
case 2:
System.out.println("冬季");
break;
case 3:
// System.out.println("春季");
// break;
case 4:
// System.out.println("春季");
// break;
case 5:
System.out.println("春季");
break;
case 6:
// System.out.println("夏季");
// break;
case 7:
// System.out.println("夏季");
// break;
case 8:
System.out.println("夏季");
break;
case 9:
// System.out.println("秋季");
// break;
case 10:
// System.out.println("秋季");
// break;
case 11:
System.out.println("秋季");
break;
}

}

}

switch与多重if异同点
相同点:
都是用来处理多分支条件的结构
不同点:
switch选择结构只能处理等值条件判断的情况
多重if选择结构既能处理某个变量处于某个连续区间时的情况,也能处理等值条件判断的情况

循环结构

循环结构是根据判断条件来重复性地执行某段代码。Java提供了while语句、do-while语句、for语句来实现循环。JDK5.0新提供了增强for循环,可以更简单的方式来遍历数组和集合。

while
do…while
for
while循环
语法结构:
初始值;
while(循环条件){
循环操作代码块;
迭代部分;
}
例题:在控制台输出10遍好好学习,天天向上

package cn.bdqn.demo01;

public class Demo01 {

public static void main(String[] args) {
//在控制台输出10遍好好学习,天天向上
//不使用循环来实现
System.out.println("第1遍:好好学习,天天向上");
System.out.println("第2遍:好好学习,天天向上");
System.out.println("第3遍:好好学习,天天向上");
System.out.println("第4遍:好好学习,天天向上");
System.out.println("第5遍:好好学习,天天向上");
System.out.println("第6遍:好好学习,天天向上");
System.out.println("第7遍:好好学习,天天向上");
System.out.println("第8遍:好好学习,天天向上");
System.out.println("第9遍:好好学习,天天向上");
System.out.println("第10遍:好好学习,天天向上");

System.out.println("--------------------------------");

//使用循环来实现
int i =1;
while(i<=100){
System.out.println("第"+i+"遍:好好学习,天天向上");
i++;
}

}

}

执行规律:
1)首先执行1次初始值代码
2)判断循环条件,如果循环条件为true,则执行{}里的循环操作代码块,并执行迭代部分,之后再次进行循环条件的判断,根据循环条件的结果决定是否再执行{}里的代码
如果循环条件为false,则结束整个while循环结构,继续往下执行while循环结构后面的代码
注意事项:
1)初始值只执行1次
2)循环条件不管多么简单还是多么复杂,都只能是布尔值,要么为true,要么为false
3)循环操作代码块可以是一行或者多行语句,
4)在循环结构中一定要有迭代部分来改变初始值,从而让循环条件再某个时候不再满足,结束循环操作,否则循环会进入死循环
5)如果循环条件在第一次判断的时候就不满足,那么循环操作一次都不会执行
Java中的循环控制语句有while循环、do-while循环和for循环等,循环结构的特点是在给定条件成立时,反复执行某程序段,直到条件不成立为止。

例题:使用while循环模拟打印50份试卷

package cn.bdqn.demo01;

public class Demo03 {

public static void main(String[] args) {
//使用while循环模拟打印50份试卷

//初始值
int i =1;
while(i<=50){//循环条件
System.out.println("打印第"+i+"份试卷");//循环操作
++i;//迭代部分
}

System.out.println("试卷打印完毕");

}

}

do-while循环结构
语法结构:
初始值
do{
循环操作代码块;
迭代部分;
}while(循环条件);

例题:使用do-while循环输出100遍好好学习,天天向上

public static void main(String[] args) {
//使用do-while循环输出100遍好好学习,天天向上

//初始值
int i =1;
do{
System.out.println("第"+i+"遍:好好学习,天天向上");//循环操作
i++;//迭代部分
}while(i<=100);//循环条件

System.out.println("程序执行完毕");
}

}

执行规律:
1)首先执行1次初始值
2)然后进入{}内执行循环操作和迭代部分
3)执行完1次{}里的代码后判断循环条件,如果循环条件为true,继续执行{}里的循环操作代码块和迭代部分,

如果循环条件为false,结束整个do-while循环结构,继续往下执行do-while循环结构后面的代码

注意事项:

初始值只执行1次
do-while循环是先执行1次循环操作,然后再去判断循环条件。因此如果第一次循环条件就不满足,循环操作也会执行一次
循环条件不管多么的简单还是复杂,都只能是布尔值,要么为true,要么为false
for循环
语法结构:
for(初始值;循环条件;迭代部分){
循环操作代码块
}

例题:使用for循环输出100遍好好学习,天天向上

public static void main(String[] args) {
//使用for循环输出100遍好好学习,天天向上
for(int i=1;i<=100;i++){
System.out.println("第"+i+"遍:好好学习,天天向上");
}

System.out.println("程序执行完毕");
}

}

执行规律:
1)首先执行1次初始值代码
2)判断循环条件,如果循环条件为true,则执行{}里的循环操作代码块,执行完循环操作代码后执行迭代部分,之后再次进行循环条件的判断,根据循环条件的结果决定是否再执行{}里的代码

如果循环条件为false,则结束整个for循环结构,继续往下执行for循环结构后面的代码

注意事项:

初始值只执行1次
循环条件不管多么简单还是多么复杂,都只能是布尔值,要么为true,要么为false
循环操作代码块可以是一行或者多行语句
在循环结构中一定要有迭代部分来改变初始值,从而让循环条件再某个时候不再满足,结束循环操作,否则循环会进入死循环
如果循环条件在第一次判断的时候就不满足,那么循环操作一次都不会执行
例题:输入一个值,然后根据这个值输出一下加法列表:


springboot 整合使用redis发布订阅功能_代码块

程序如下:

package cn.bdqn.demo03;

import java.util.Scanner;

public class Demo03 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个值:");
int num =sc.nextInt();
System.out.println("根据这个值可以输出以下加法表:");
for(int i =0;i<=num;i++){
System.out.println(i+"+"+(num-i)+"="+num);
}
}

}

循环主要由4个部分组成
初始部分:设置循环的初始状态。
循环体:重复执行的代码
循环条件:判断是否继续循环的条件。
迭代部份:改变循环条件的值。如果没有迭代部分,会出现死循环。
equals函数
比较两个字符串的内容是否相同
规则:字符串1.equals(字符串2);
这是用来比较字符串1和字符串2是否相同。

String str1 = "hello";
String str2 = "hello";

boolean result1 = str1.equals(str2);
System.out.println("str1和str2内容相同:"+result1);
boolean result2 = str1.equals("Hello");
System.out.println("str1和str2内容相同:"+result2);

运行结果:


springboot 整合使用redis发布订阅功能_代码块_02

随机函数
产生随机数(0.0~1.0)的方法:

模板:double num1 = Math.random();

Math.random()随机返回的是一个[0.0,1.0)的double类型的数据。
产生随机数(0~1)的方法:

package cn.bdqn.demo01;

public class randomHanShu {

public static void main(String[] args) {
int num1 = (int)(Math.random()*10);
System.out.println(num1);

}

}

随机结果如下:


springboot 整合使用redis发布订阅功能_代码块_03

每次随机的结果都是不一样的。
那么随机获取一个[19,31)之间的 int 型数据怎么办呢?
···
int num3=(int)(Math.random()*12+19);
System.out.println(num3);
···
解释:
012=0;112=12
0+19=19;12+19=31

  • 随机获取[num1,num2)之间的int型数据:

(int)(Math.random)*(num2-num1)+num1

标签:语句,订阅,springboot,redis,System,else,循环,println,out
From: https://blog.51cto.com/u_15733182/5928106

相关文章