day02-day03
1.类型转换
1.1.自动类型转换
把一个表示数据范围小的数值或变量赋值给一个表示数据范围大的变量,这种转换方式是自动的,直接书写即可。
例:
double num = 10;//将int类型的10直接复制给double类型
System.out.println(num);//打印输出结果为10.0
1.2.强制类型转换
目标数据类型 变量名 = (目标数据类型) 值/变量
- 缺点:容易造成精度缺失的问题
常用的七个数据类型表示数据范围从小到大为:
- 数据范围从小到大的转换:自动类型转换
- 数据范围从大到小的转换:强制类型转换
注:
char
转换为int
时,按照ASCII
码表中对应的int值进行转换- 整数默认为int类型,
byte
、short
、char
类型参与运算均会自动转换为int类型- boolean类型不能与其他基本数据类型进行转换
2.运算符
2.1.算术运算符
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 小学内容,不多解释 |
- | 减 | 小学内容,不多解释 |
* | 乘 | 小学内容,不多解释 |
/ | 除 | 小学内容,(得出的结果只有商) |
% | 取余/取模 | 获取的是两个数据做除法的余数 |
/
和%
:两个数据做除法时,/
取结果的商、%
取结果的余数- 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
2.1.1.char类型参与算术运算
使用的是计算机底层对应的十进制数值(将下表加以记忆)
字符 | 对应值 | 注 |
---|---|---|
a | 97 | a-z连续,则b对应98… |
A | 65 | A-Z连续,则B对应66… |
0 | 48 | 0-9连续,则1对应49… |
2.1.2.字符串的+操作
-
当
+
操作中出现字符串时,与字符串临近的+
号为字符串连接符 -
当连续进行
+
操作时,从左到右逐个执行 -
例:
System.out.println("hello"+'a'+1);//打印输出结果为:helloa1
System.out.println('a'+1+"hello");//打印输出结果为98hello
2.2.赋值运算符
符号 | 作用 | 解释 |
---|---|---|
= | 赋值 | 如:a=10 将10赋值给变量a |
+= | 加后赋值 | a+=b 将a+b的值赋值给a |
-= | 减后赋值 | a-=b 将a-b的值赋值给a |
*= | 乘后赋值 | a*=b 将a×b的值赋值给a |
/= | 除后赋值 | a/=b 将a➗b的商赋值给a |
%= | 取余后赋值 | a%=b 将a➗b的余数赋值给a |
- 注:扩展的赋值运算符隐含了强制类型转换
2.3.自增自减运算符
符号 | 作用 | 解释 |
---|---|---|
++ | 自增 | 变量的值+1 |
– | 自减 | 变量的值-1 |
- 参与操作时,若自增自减运算符放于变量后,先拿变量参与操作,后拿变量做++或–
- 参与操作时,若自增自减运算符放于变量前,先拿变量做++或–,后拿变量参与操作
2.4.关系运算符
包括:小于<
、小于等于<=
、大于>
、大于等于>=
、等于==
、不等于!=
-
最终结果为
boolean
类型(要么是true
,要么是false
) -
注意不要将判断是否相等的
==
误写成赋值=
2.5.逻辑运算符
符号 | 名称 | 解释 |
---|---|---|
& | 逻辑与(和) | a&b a与b都是true,结果为true,否则都是false |
| | 逻辑或 | a|b a与b都是false,结果为false,否则都是true |
^ | 逻辑异或 | a^b a与b结果不同为true,相同为false |
! | 逻辑非 | !a 结果与a的结果正好相反,a为false则!a就是true |
2.5.1.短路逻辑运算符
符号 | 作用 | 解释 |
---|---|---|
&& | 短路与 | 左边为真,右边执行;左边为假,右边不执行 |
|| | 短路或 | 左边为假,右边执行;左边为真,右边不执行 |
2.6.三元(目)运算符
语法格式:
关系表达式 ? 表达式1 : 表达式2;
格式解析:
关系表达式为true时调用表达式1,反之调用表达式2
3.键盘录入
3.1.使用步骤
- 导包:
Scanner
类在java.until
包下
import java.until.Scanner;
- 创建
Scanner
对象
Scanner sc = new Scanner(System.in);
- 接收数据
int i = sc.nextInt();
4.流程控制语句
4.1.顺序结构
- 程序中最简单最基本的流程控制,没有特别的语法结构,按照代码的先后顺序依次执行。
4.2.分支结构
4.2.1.if语句
- 格式一:
if(关系表达式){
语句体;
}
- 格式二:
if(关系表达式){
语句体1;
}else{
语句体2;
}
- 格式三:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
...
else{
语句体n+1;
}
4.2.2.switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
//default在最后的时候可以不加break
}
-
流程:
- 计算表达式的值
- 和
case
依次比较 - 执行相应语句
- 遇
break
结束 - 与所有
case
都不匹配,执行default
部分,然后结束
-
注意事项:
- 跟
case
顺序没有关系- 如果匹配上,到
break
结束- default跟位置无关,若不在最后,要加上
break
4.3.循环结构
4.3.1.for循环
- 结构:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
注:条件判断语句结果为false
,循环结束;结果为true
,循环继续
4.3.2.while循环
- 结构:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
4.3.3.do…while循环
- 格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
- 格式解释:
初始化语句:表示循环开始时的起始状态
条件判断语句:表示循环反复执行的条件,判断循环还执不执行
循环体语句:表示循环反复执行的内容
条件控制语句:表示循环执行中每次变化的内容
4.3.4.三种循环的区别
for
、while
和do...while
for
循环和while
循环先判断后执行do...while
循环先执行一次,后判断是否继续
for
循环和while
循环的区别
for
循环中,条件控制语句所控自增变量,归属for
循环的语法结构,在for
循环结束后,就无法再次访问了while
循环中,条件控制语句所控自增变量,不归属while
循环的语法结构,在while
循环结束后,还可以继续使用该变量for
循环一般用在范围确定的场景,while
循环用于不确定范围的场景
- 死循环
for( ; ; ){}
while(true){}
do{}while(true)
5.跳转控制语句
break
——结束循环continue
——跳过本次循环,继续下次循环return
——结束方法,不是结束循环
注:break
和continue
只能在循环中使用,单独使用没有意义
6.循环嵌套
概述:在循环中继续定义循环
例:
//输出5行4列的*号
for(int i = 1 ;i <= 4 ; i++){ //外循环控制的行
for(int j = 1 ;j <= 5 ; j++){ //内循环控制的列
System.out.print("*");//不换行输出*
}
System.out.println();//通过输出语句换行
}
- 结论:外循环执行一次,内循环执行一圈
7.Math
7.1.概述
- math是一个类,也是Java提供好的API,内部提供了产生随机数的功能
7.2.创建对象
double random = Math.random();
//返回带正号的double值,该值大于等于0.0且小于1.0
- 例:获取一个1-100之间的随机数
for(int x = 0;x < 100;x++){
int num = (int)(Math.random()*100)+1;
}