类型转换
byte—–>short—–>int—–>long—–>double
char—–>int
float—–>double
小数据类型 变量名=(小数据类型)大数据类型的值
if分支
单分支
双分支
多分支
嵌套if
常用快捷键
psvm :然后tab键,自动生成main方法
sout :然后tab键,自动生成 System.out.println()方法
ctrl+/ :单行注释,执行1次,注释掉,再执行一次,取消注释
ctrl+shift+/ :多行注释
ctrl+d :复制光标所在行
ctrl+y :删除光标所在行,或者删除选中的多行
shift+enter :换行
shift+tab :向左缩进
Ctrl+/ 单行注释
ctrl+shift+/ 多行注释
Switch
基本用法
跟多重的if进行对比
用于等值比较,if既可以用于等值,又可以用于范围
语法结构:
细节说明:
1.每个case后面的值,不能相同
2.switch括号中支持哪些数据类型?byte、short、int、char、String、enum枚举
3.break不能省,否则当匹配到某个case时,后面的case也会执行,不符合实际
4.若多个case的执行逻辑一样的话,可以合并在一起
switch() {
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
case 常量3:
语句n;
break;
}
/**
细节说明:
1.每个case后面的值,不能相同
2.switch括号中支持哪些数据类型?byte、short、int、char、String、enum枚举
3.break不能省,否则当匹配到某个case时,后面的case也会执行,不符合实际
4.若多个case的执行逻辑一样的话,可以合并在一起
*/
case 1:
case 2:
System.out.println("第1季度");
break;
//练习,输入学生成绩,[90,100]优秀,[60-90]良好,其他不及格
新写法
switch (cc) {
// -> 箭头符号,在lambda中会大量使用,这种写法,已经具备break的功效
case 1 -> System.out.println("one"); case 2 -> System.out.println("two");
case 3,4 -> System.out.println("aaaaaaaa"); default -> System.out.println("many");
}
循环
为什么要用
引入:打印试卷,若没有循环,我们需要使用sout()输出100行【复制99行,修改99次】 无疑:很麻烦
发现:上面做的事情,就是一个重复的事情,对于重复的操作,java提供了循环来解决 使用循环后的初体验:代码少了很多,而且可读行、可维护性都变得非常好。
while(循环条件-boolean类型){
循环操作;
更新循环变量:
}
//完成1-n,n-999键盘输入,计算偶数/奇数之和
是什么
生活中的循环:跑步、日复一日.......
循环3要素:
-
循环操作:你要干的事情
-
循环条件:你的操作,有一个条件限制
-
更新循环变量:条件是通过变量值去动态更新的
怎么玩
一眼望不到尽头,看身边!先分析1次、2次操作,后面的就同理
while循环
该循环,它的循环体内的代码有可能一次都不执行。
while(循环条件-boolean类型) {
循环操作;
更新循环变量;
}
需求:考试,若不合格,补考,补考次数不能超过3次,最多考四次。我们就使用控制台输入模拟交卷 以及是否合格的一个结果。
for循环
针对循环次数固定的情况,我们通常使用for循环
//特殊用法1:中间不写,默认是true for (int j = 1;; j++) {
System.out.println("第"+j+"份试卷");
}
//特殊2:
for (int j = 1;;) { System.out.println("第"+j+"份试卷");
}
//特殊3: for (;;) {
System.out.println("第份试卷");
}
//特殊4
for (int k = 0,m=6; k <=6 && m >= 0 ; k++,m--) { System.out.println(k + "+" + m + "=" + (k + m));
作业
import java.util.Scanner;
/**
* @Description: 5.13
* @author: cjy
* @date:2021/5/13 15:13
*/
import java.util.Scanner;
import java.util.jar.JarOutputStream;
public class Test04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double r = Math.random();
int a = (int) (r * 9000 + 1000);
int m = a / 1000;//千位
int n = a / 100 - 10 * m;//百位
int k = a / 10 - 100 * m - 10 * n;//十位
int l = a - 1000 * m - 100 * n - 10 * k;//个位
int max;//最大数
//比较得出最大数
max=m>=n?m:n;
int max1=max;
max=max1>=k?max1:k;
max1=max;
max=max1>=l?max1:l;
int count=0;//猜的次数
long startTime = System.currentTimeMillis();//开始时间
// 用户猜测随机数
do {
System.out.println("输入你的猜想");
int guess = input.nextInt();
if (max < guess) {
System.out.println("大了,再猜一次吧!");
count++;
} else if (max > guess) {
System.out.println("小了,再猜一次吧!");
count++;
} else {
// 猜中
count++;
break;
}
} while (true);
long endTime = System.currentTimeMillis();//结束时间
System.out.println("这个数字是:" + max);
System.out.println("您猜的次数是:" + count);
System.out.println("您猜的时间是:" + (endTime - startTime) + "毫秒");
// 给出评价
if (count == 1) {
System.out.println("你太牛逼了");
} else if (count >= 2 && count <= 5) {
System.out.println("不错,再接再厉");
} else if (count >= 5 && count <= 10) {
System.out.println("需要努力了");
}
else {
System.out.println("你是猪吗");
}
}
}
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("随意输入一个两位数/三位数/四位数");
int num = input.nextInt();
int realnum=num;
int count=0;//计算位数
while (num > 0) {
num = num / 10;
count++;
}
do {
if (count==4) {//四位数
if (realnum%4==0) {
System.out.println(realnum+"是闰年");
}
else
{
System.out.println(realnum+"不是闰年");
}
break;
}
else if (count==3) {
int m = realnum / 100;//百位
int n = realnum / 10 - 10*m;//十位
int k = realnum - 100 * m - 10* n;//个位
int he=m*m*m+n*n*n+k*k*k;
if(he==num)
{
System.out.println(realnum+"是一个水仙花数");
}
break;
}
else if (count== 2) {
System.out.println(realnum+"是一个二位数");
break;
} else {
System.out.println("请输入正确的数!");
}
}while(true);
}
}