常量
含义:在程序的执行过程中,该量不能发生变化
- 使用final修饰的变量成为常量
final int a = 10;
System.out.println(a);
- 数字字面量
System.out.println(10+20);
- 字面值常量
System.out.println("用良心做教育,做真实的自己");
转义字符
表示具体特殊意义的字符本身
" 代表一个双引号
’ 代表一个单引号
\ 代表一个斜杠
\n 代表换行
\t 代表水平制表
System.out.println("何老师说:\"用良心做教育,做真实的自己。\"");
System.out.println("何老师说:\'用良心做教育,做真实的自己。\'");
System.out.println("何老师说:\\用良心做教育,做真实的自己。\\");
System.out.print("杨晨\n");
System.out.print("陈希");
System.out.println("3*3=9\t3*4=12\t3*5=15");
System.out.println("4*3=12\t4*4=16\t4*5=20");
Java的执行语句
- 顺序执行:方法中的代码从上往下执行
- 分支执行:依据不同的条件去处理不同功能的代码
2.1 if
2.2 switch - 循环执行:条件成立会重复性的执行某个功能
3.1 for
3.2 while
3.3 do-while - 特殊的流程控制语句
4.1 break
4.2 continue
4.3 return
4.4 lable
判断语句
if分支
简单的if分支
语法结构:
if(表达式){
...代码块..
}
理解:
表达式的结果一定是boolean类型 true - 执行代码块 false - 跳出if分支
做实验:
if(true){
System.out.println("你好呀!");
}
案列:键盘输入成绩,大于98分,奖励法拉利玩具车
Scanner input=new Scanner(System.in);
double javaScore = input.nextDouble();
if(javaScore>98){
System.out.println("奖励一辆法拉利");
}
案列:计算 健康值=体重(kg)/身高(m)的平方 20~25健康
Scanner input = new Scanner(System.in);
System.out.println("请输入身高:");
double height = input.nextDouble();
System.out.println("请输入体重:");
double weight = input.nextDouble();
double zhi = weight/(height*height);
if(zhi>=20&&zhi<=25){
System.out.println("健康");
}
System.out.println("请输入java成绩:");
double javaScore= input.nextDouble();
System.out.println("请输入音乐成绩");
double musicScore= input.nextDouble();
if((javaScore>=98&&musicScore>=80)||(javaScore==100&&musicScore>70)){
System.out.println("奖励法拉利一辆");
}
案列:键盘输入成绩,成绩大于98分奖励劳斯莱斯一辆,否则罚抄代码
Scanner input=new Scanner(System.in);
System.out.println("请输入成绩:");
double javaScore=input.nextDouble();
if(javaScore>98){
System.out.println("奖励劳斯莱斯一辆");
}else{
System.out.println("罚抄代码");
}
复杂条件的if分支
案例一: 人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)
//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(m):");
double height = scan.nextDouble();
//2.计算健康值
double health = weight/(height*height);
//3.判断
if(health >= 20 && health <=25){
System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
}
案例二:小西Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();
if((javaScore>98&&musicScore>80) || (javaScore==100&&musicScore>70)){
System.out.println("奖励小西法拉利玩具赛车一辆");
}
总结:if可以判断数值的区间和复杂的条件
if…else…
语法规则:
if(表达式){ ...代码块... }else{ ...else代码块... }
理解:
表达式的值必须是boolean true - 执行代码块 false- 执行else代码块
做实验:
if(false){
System.out.println("代码块");
}else{
System.out.println("else代码块");
}
System.out.println("if分支以外的代码");
案列:如果京香考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
if(javaScore>98){
System.out.println("奖励京香劳斯莱斯玩具赛车一辆");
}else{
System.out.println("老师给京香通宵补课");
}
总结:if…else…二选一
if…else if …
语法结构:
if(表达式){
//...代码块1...
}else if(表达式){
//...代码块2...
]else if(表达式){
//..代码块n...
}else{
//...else代码块...
}
理解:
表达式的结果必须是boolean值
从上往下判断,哪个表达式先成立(true),就执行相应的代码块
注意:
else{...else代码块...}根据需求可写可不写
做实验:
if(false){
System.out.println("...代码块1...");
}else if(false){
System.out.println("...代码块2...");
}else if(false){
System.out.println("...代码块n...");
}else{
System.out.println("...else代码块...");
}
System.out.println("if分支以外的代码");
案例一:人类的健康值在15-20的数值内为偏瘦20-25的数值内为健康25-30的数值内为偏胖健康值算法为:体重(Kg) / 身高(米)的平方)
//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(m):");
double height = scan.nextDouble();
//2.计算健康值
double health = weight/(height*height);
//3.判断
if(health>=15 && health<20){
System.out.println("小护士说:\"偏瘦,多喝啤酒,多吃垃圾食品,多熬夜\"");
}else if(health>=20 && health<25){
System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
}else if(health>=25 && health<30){
System.out.println("小护士说:\"偏胖,多运动,嘿嘿嘿~~~\"");
}else{
System.out.println("小护士说:\"数据异常,请到***医院详细检查\"");
}
案例二:通过键盘录入学生成绩如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”否则如果在60-70之间,则打印“D”否则打印“E”
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if(score >= 90 && score<=100){
System.out.println("A");
}else if(score >= 80 && score<90){
System.out.println("B");
}else if(score >= 70 && score<80){
System.out.println("C");
}else if(score >= 60 && score<70){
System.out.println("D");
}else if(score >= 0 && score<60){
System.out.println("E");
}else{
System.out.println("成绩异常");
}
案例:举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,
根据性别分别进入男子组和女子组。
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛成绩:");
double score = scan.nextDouble();
if(score >= 0 && score < 16){
System.out.println("请输入性别:");
String sex = scan.next();
if(sex.equals("男")){//判断两个字符串内容是否相等
System.out.println("恭喜,进入到男子组决赛");
}else if(sex.equals("女")){//判断两个字符串内容是否相等
System.out.println("恭喜,进入到女子组决赛");
}else{
System.out.println("性别异常");
}
}else{
System.out.println("重在参与");
}
总结:
if(){} :单纯判断某个条件
if...else...:二选一
if...else if...:多选一
if可以判断单个值,也可以判断区间,也可以判断复杂的条件
switch分支
语法结构:
switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}
理解:
表达式的结果:byte、short、int、char、字符串、枚举
分别给值1、值2、值n做比较,哪个相等就执行对应的代码块
如果都不相等,执行default代码块
break的作用是跳出整个分支语句
注意:
default:
...default代码块...
break;
default代码块根据需求可写可不写
做实验:
switch(1000){
case 10:
System.out.println("10");
break;
case 50:
System.out.println("50");
break;
case 100:
System.out.println("100");
break;
default:
System.out.println("default代码块");
break;
}
System.out.println("switch分支以外的代码");
案例:北条参加计算机编程大赛
如果获得第一名,将参加1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,老师晚上给北条通宵补课
Scanner scan = new Scanner(System.in);
System.out.println("请输入北条麻衣的比赛名次:");
String str = scan.next();
switch(str){
case "第一名":
System.out.println("-参加1个月马尔代夫旅游");
break;
case "第二名":
System.out.println("奖励苹果Pro笔记本电脑一部");
break;
case "第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("老师晚上给北条通宵补课");
break;
}
面试题:
case的值可以相同吗? 不允许相同
default可以省略吗? 可以
break可以省略吗?可以
default的位置一定要在最后吗? 不一定,最好放在最后可读性会高一些
表达式值的类型可以是什么? byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)
案例:输入年和月,输出当月的天数
Scanner scan = new Scanner(System.in);
System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
int day = 0;//当月天数
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
if((year%4==0&&year%100!=0) || (year%400==0)){//闰年
day = 29;
}else{//平年
day = 28;
}
break;
}
System.out.println(year + "年" + month + "月的天数为:" + day + "天");
if vs switch
表达式的区别:
if的表达式:boolean
switch的表达式: byte、short、int、char、字符(JDK1.7)、 枚举(JDK1.5)
应用场景的区别:
if:判断单个值、判断区间、判断复杂条件
switch:判断单个值
循环语句
for循环
语法结构:
for(表达式1;表达式2;表达式3){
...代码块...
}
理解:
表达式1:初始化变量
表达式2:判断条件
表达式3:更新变量
执行流程:
1.初始化变量
2.判断条件,结果必须是boolean类型
true-执行代码块,并且更新变量,重复第2步
false-跳出整个循环语句
做实验:
for(int i = 0;i<5;i++){
System.out.println("键盘敲烂,月薪过万!!!");
}
for循环变形记:
- 代码块执行完毕后再更新变量,i++和++i效果是一样的
- for循环中定义的变量他的作用域就在for循环内
- 更新变量没有局限性,可以自增也可以自减
int k = 0;
for(;k<5;){
System.out.println("键盘敲烂,月薪过万!!!");
k++;
}
System.out.println(i);//5
for(int i = 1;i<=5;i++){
System.out.println(i);
}
for(int i = 5;i>=1;i--){
System.out.println(i);
}
for(int i = 1;i<=9;i+=2){
System.out.println(i);
}
死循环:
注意:死循环是应该要积极避免的
for(;;){
System.out.println("死循环");
}
System.out.println("xxxxx");
案例1:循环录入5次int类型的数字,输出总和
Scanner scan = new Scanner(System.in);
int sum = 0;
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
sum += num;
//sum = (int)(sum+num);
}
System.out.println("总和为:" + sum);
案例2:循环录入麻生希同学的5门课成绩,计算平均分
Scanner scan = new Scanner(System.in);
int sum = 0;
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "门成绩:");
int num = scan.nextInt();
sum += num;
}
System.out.println("平均分为:" + (sum/5));
案例3:循环录入5次int类型的数字,输出最大值
Scanner scan = new Scanner(System.in);
System.out.println("请输入第1个数字:");
int max = scan.nextInt();
for(int i = 2;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
if(max < num){
max = num;
}
}
System.out.println("最大值为:" + max);
for循环嵌套
案例1:打印以下图形
//****
//****
//****
for(int i = 0;i<3;i++){//控制行数
for(int j = 0;j<4;j++){//控制列数
System.out.print("*");
}
System.out.println();
}
案例2:打印以下图形
//* i=0
//** i=1
//*** i=2
//**** i=3
//***** i=4
for(int i = 0;i<5;i++){
for(int j = 0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
案例3:打印以下图形
//***** i = 0
//**** i = 1
//*** i = 2
//** i = 3
//* i = 4
for(int i = 0;i<5;i++){
for(int j = 0;j<5-i;j++){
System.out.print("*");
}
System.out.println();
}
案例4:打印以下图形
//***** i = 0
//**** i = 1
//*** i = 2
//** i = 3
//* i = 4
for(int i = 0;i<5;i++){
//打印空格
for(int k = 0;k<i;k++){
System.out.print(" ");
}
//打印星星
for(int j = 0;j<5-i;j++){
System.out.print("*");
}
System.out.println();
}