目录
数据类型转换
问:不同数据类型能否一起运算?
答:能
1.1 自动类型转换(隐式)
概念:不同数据类型运算时,数据范围小的数据类型会自动转换成范围大的数据类型
byte->short->int->long->float->double
格式:范围大的数据类型 变量名 = 范围小的数据类型的值;
1.2 强制类型转换(强转)
概念:使用特定格式将数据范围大的值转换成数据范围小的类型
格式:范围小的数据类型 变量名 = (目标类型)范围大的数据值;
注:
1、基本数据类型不建议使用强制类型转换
2、byte、short、char在运算时,会自动转换成int
流程控制
功能含义:就是控制流程.
不管当前的流程被怎么控制,只要脱离控制,程序依然会顺序执行的。流程控制就是为了让它脱离顺序,达到一定目的。
顺序结构
程序的运行步骤与代码的书写顺序一致
分支结构
if、else
if(条件){
语句a
}
语句b
逻辑:判断条件是否满足,如果满足则执行语句a,再执行语句b;
反之,直接执行语句b。
if(条件){
语句a
}
else{
语句b
}
语句c
逻辑:条件满足,执行语句a;反之,执行语句b;语句c无论如何都会执行。
注:if、else的是互斥的;if、else中必须有一个被执行
注:
当if()不带大括号的时候它就找if下面的第一个分号; 里的内容,如果分号前是空那就什么都不执行。对应else也是一样适用的。
int i = 3;
if (i < 2)
System.out.println("S");
System.out.println("B");
if(条件1){
语句a
}
else if(条件2){
语句b
}
else if(条件3){
语句c
}
...
else{
语句n
}
语句m
逻辑:依次判断每一个条件,当有一个条件满足时,就执行对应代码段中的语句,然后执行语句m;
如果没有任何一个语句满足条件,则执行最后一个else的语句n,然后再执行语句m。
switch(表达式){
case 值1:
语句a
break;
case 值2:
语句b
break;
case 值3:
语句c
break;
...
default:
语句d
break;
}
逻辑:计算表达式的结果,将此结果与case后的值进行对比,如果相同,则执行该case后的语句;
如果没有一个case后的值与表达式的结果相同,则执行default后的语句。
注:
- 表达式中可以放置的数据类型有byte、short、int、char、String、枚举
- case后值的类型必须表达式的结果类型一致
- case后的值必须唯一
- default不是必需的,只有没有任何一次case满足且需要有默认结果时才使用;且位置是任意的,一般放在最后
- break的作用是结束整个switch-case结构
- 当case判断到有满足条件的时候就执行,如果有break就跳出。没有就继续执行,直到有break。当case不满足条件就跳过这个case执行下一个case。
不使用break的穿透性:break会导致立刻中断跳出。只要没有中断就会继续执行下去,那么把default放在最前面,或者放在中间,case执行了一边再回到default,还会从default往下执行下面的case。
在某一个case值与表达式结果匹配时,不写break,程序会顺序的向下执行,知道遇到下一个break,或者知道switch-case结构的末尾
这是计算月份某一年第几月的第几号是这一年的多少天。
倒着取能够把前面的月份都算上,以后有这样的算法,可以这样计算。
int sum = 0;
switch (month) {
case 12:
sum = 30;
case 11:
sum = 31;
case 10:
sum = 30;
case 9:
sum = 31;
case 8:
sum = 30;
case 7:
sum = 31;
case 6:
sum = 31;
case 5:
sum = 30;
case 4:
sum = 31;
case 3:
sum = 28;
case 2:
sum = 31;
case 1:
sum = day;
----------------------------------------------------------------
所有满足条件的月份都可以向下执行
int month = 5;
if(month >= 1 && month <= 12){
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("大");
break;
case 2:
case 4:
case 6:
case 9:
case 11:
System.out.println("小");
break;
}
------------------------------------------------------------------
先执行一边case发现没有满足条件的,之后执行default,然后发现没有break,又把所有的case又执行了一边。
int score = 44;
switch (score / 10) {
default:
System.out.println("E");
case 10:
case 9:
System.out.println("A");
case 8:
System.out.println("B");
case 7:
System.out.println("C");
case 6:
System.out.println("D");
}
输出:
E
A
B
C
D
循环结构
随机数、键盘输入
键盘输入java.util.Scanner
使用步骤:
- 创建Scanner对象
Scanner sc = new Scanner(System.in);
- 调用接收判断输入的方法
String s = sc.next();接收字符串 ,返回字符串
int in = sc.nextInt();接收int数据 ,返回int
随机数
使用步骤:
- 创建Random对象
Random r = new Random();
- 调用随机整数的方法
r.nextInt();随机整个int范围内的数
r.nextInt(int bound);随机到的数据是0~bound-1,包含0,也包含bound-1
注:随机 [m,n] 公式 nextInt(n-m 1) m
Random random = new Random();
double randomNum = random.nextInt();
System.out.println(randomNum);
想要随机一个一个23-44
double randomNum = random.nextInt(22) 23;//这里面的22是要考虑到0的感受的
System.out.println(randomNum);
想要随机的数就是[m-n] 从m-n的随机数
公式:(n-m 1) m
额外
- 对象和接口都是引用数据类型,引用数据类型传递的是地址
- 所有条件判断的时候,最先做的是判断合法性,之后才判断。这样可以避免无用的条件判断
来源:https://www./content-4-463001.html
|