一、数据类型转换
不同数据类型之间是否可以一起运算?
答案是可以
## 1.1 自动类型转换(隐式类型转换)
概念:不同数据类型运算时,数据范围小的会自动转换为范围大的数据类型。
byte ->short ->int ->long ->float ->double
格式: 范围大的数据类型 变量名 = 范围小的数据类型的值;
## 1.2 强制类型转换
**byte short char
**这三种数据类型在进行四则运算(加减乘除)时就自动转换为int类型
**自增自减本身存在强制类型转换
byte bb = 3;
bb++;
bb--;都是可以的
**复合赋值本身也存在强制类型转换
byte bb = 3;
bb+=4;没问题
基本数据类型不建议使用强制类型转换。
强转格式:范围小的数据类型 变量名 = (目标类型)范围大的数据值
double d1 = 2.3;
double d2 = 3.2;
int s = (int)(d1+d2);
二、 流程控制
注: 如果没有{}包裹代码段,name流程控制只能影响到离他最近的一句语句
## 2.1 顺序结构
概念:程序的运行步骤与代码的书写顺序一致
## 2.2 分支结构
if-else
### 2.2.1 单if结构
格式:
if(条件){
语句a
}
语句b
逻辑:判断条件是否满足,如果满足则执行语句a再执行语句b
反之,直接执行语句b
### 2.2.2 标准if-else结构
格式:
if(条件){
语句a
}else{
语句b
}
语句c
逻辑:满足条件执行语句a,反之执行语句b,再执行语句c
注:if、else是互斥的,if和else有且仅有一个被执行
### 2.2.3 多条件的if-else
格式:
if(条件){
语句a
}
else if(条件2){
语句b
}
else if(条件3){
语句c
}
....
else{
语句n
}
语句m
逻辑:依次判断每一个条件,当有一个条件满足时就执行对应代码段中的语句,然后执行语句m
如果没有任何一个条件满足,就执行else的语句n,最后执行语句m
## 2.3 选择结构
关键字:switch、case、break、default
格式:
switch(表达式){
case 值1:
语句a
break;
case 值2:
语句b
break;
case 值3:
语句c
break;
.....
default:
语句d
break;
}
逻辑:计算表达式的结果,将此结果与case后的值比较,若相等,则执行 该case后的语句;
如果没有一个case后的值与表达式的值匹配,则执行default后的语句。
注:
1、表达式中可以放置的数据类型有
byte、short、int、char、String、枚举类型
2、case后的值的类型必须和表达式中的结果类型一致
3、case后的值必须唯一
4、default不是必须的,只有没有任何case值匹配时才执行且
default的位置是任意的
三、 随机数、键盘输入
## 3.1 键盘输入 java.util.Scanner
使用步骤:
1、创建Scanner对象
Scanner input = new Scanner(System.in);
2、调用接收键盘输入的方法
input.next();接收字符串
input.nextInt();接收int类型数据
## 3.2 随机数 java.util.Random
使用步骤:
1、创建Random对象
Random r = new Random();
2、调用随机整数的方法
r.nextInt(); 所有int类型范围的数
r.nextInt(int bound);bound表示范围
随机在0 ~ bound-1范围内的数,包含0,也包含bound-1
例如:随机一个[m,n] 范围内的数
公式:nextInt(n-m+1) + m;