类型转换、流程控制

一、数据类型转换

不同数据类型之间是否可以一起运算?

答案是可以

## 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;
代码改变生活
原文地址:https://www.cnblogs.com/LTJAVA/p/11368759.html