一、今日内容
1、数据类型
(1)数据类型的分类:基本数据类型,引用数据类型
(2)基本数据类型:8种
① 整型:byte、short、int、long(8个字节,但是如果数据的长度较小的话【正负21亿范围内】,long类型占4个字节,当数据大于正负21亿时,自动转为8字节。
② 浮点类型:float、double
③ 布尔类型:boolean
④ 字符类型:char
(3)引用数据类型:数组、类、枚举、接口…
(4)类型转换
① 从小到大:自动转换
② 从大到小:强制兴型转换〔可能会丢失精度】
2、常用运算符
(1)算术运算符:加、减、乘、除、取余
(2)宇符串连接符:+
当+的任意一边有字符串时,做连接操作
(3)关系运算符:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=),结果都为布尔类型
(4)赋值运算符:=
(5)逻辑运算符:与(&&)、或(||)、非(!)
(6)逻辑与:当且仅当&&两边都为真时,结果才为真;
(7)逻辑或:任意一边为真时,结果都为真;
(8)非:当表达式为真时,结果为假,表达式为假是,结果为真。
(9)逻辑运算符与、或的短路特性
① 逻辑与运算符:当&&前面的表达式为假时,后面不做判断
② 逻镊或运算符:当 || 前面的表达式为真时,后面不做判断
(10)自增减运算符:加加、减减
① 加加分为前++和后++
② 减减分为前--和后--
(12)三目运算符:条件表达式 ? 表达式1 : 表达式2
① 若条件表达式为真 = > 执行表达式1
② 若条件表达式为假 = > 执行表达式2
3、顺序、分支、循环结构
在java中,任何复杂逻辑,都可以使用顺序、分支、循环三种结构进行描述。
4、分支结构
(1)概念:在java中,当需要使用条件判断时,则需要使用分支结构。
(2)if分支
① 语法格式:
if(条件表达式){
语句块;
}
② 执行流程:
若条件表达式成立,则执行语句块;
若条件表达式不成立,则执行语句块后面的代码。
(3)if-else分支
① 语法格式:
if{(条件表达式){
语句块1;
}else{
语句块2;
}
② 执行流程:
若条件表达式成立,执行语句块1;
若条件表达式不成立,执行语句块2。
(4)if-else -if -else 分支
① 语法格式:
if (条件表达式1) {
语句块1;
}else if (条件表达式2) {
语句块2;
}else if (条件表达式n) {
语句块n;
}
② 执行流程:
若条件表达式1成立,执行语句块1;
若条件表达式2成立,执行语句块2;
若条件表达式n成立,执行语句块n;
(5)switch-case 分支
① 概念:switch case 语句用来判断—个交量与一系列值中某个值是否相等,每个值称为一个分支。
② switch语句的原則:
a. switch语句中的变量类型可以是:byte、short、int或者char。从Java7开始,switch支持字符,String类型了,同时case标签必须为字符串常量或字面量。
b. switch语句可以拥有多个case语句,每个case后面跟一个要比较的值和冒号。
c. case语句中的值的数据类型必须与变量的数据类型相同,而目只能是常量或者字面常量。当变量的值与case语句的值相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出switch语句。当遇到break语句时,switch语句终止。
d. 程序跳转到switch语句后面的语句执行。case语句不必须要包含break语句。
e. 如果没有break语句出现,程序会继续执行下一条case语句,直到出现break语句。
f. switch语句可以包含一个default分支,该分支一般是switch语句的最后一个分支(可以在任何位置,但建议在最后一个)。
g. default在没有case语句的值和交量值相等的时候执行。defauIt分支不需要break语句。
③ switch case 执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
④ 语法格式:
switch(表达式){
case 1: 语句块1
break; //可选
case 2: 语句块2
break;
case n:语句块n
break;
default: 语句块
}
⑤ 执行流程:
若表达式满足case 1执行case 1中的语句块;
若表达式满足case 2执行case 2中的语句块;
若表达式满足case n执行case n中的语句块;
都不满足,执行default中的语句块。
5、循环结构
(1)for循环
① 语法格式:
for(初始表达式; 条件表达式; 修改初始表达式){
循环体;
}
② 执行流程:
初始表达式 = > 条件表达式【若成立】=>循环体; = > 修改初始表达式 = > 条件表达式 =>若成立。。。。
若不成立 = > 跳出循环体;
③ break和continue
break:表示结束当前语句块,在循环中表示结束当前循环体;
continue:在循环中表示跳出当前循环体,继续执行下一次循环;
(2)while循环
① 语法格式:
初始表达式;
while(条件表达式){
循环体;
修改初始表达式;
}
② 执行流程:
初始表达式 = > 条件表达式 = > 若成立 =>执行循环体 = > 修改初始表达式 = > 条件表达式 = >。。。。。
若不成立 = > 不进入循环体,执行后边的代码
(3)do-while循环
① 语法格式:
初始表达式;
do{
循环体;
修改初始表达式
}while(条件表达式);
② 执行流程:
(4)双重for循环
① 语法格式:
for(初始表达式1; 条件表达式2; 修改初始表达式3){
for(初始表达式4; 条件表达式5; 修改初始表达式6){
循环体;
}
}
② 执行流程:
初始表达式1 = > 条件表达式2 = > 若成立 = > 初始表达式4 =>条件表达式5 = > 循环体 = > 修改初始表达式6 =>条件表达式5 = > 若成立 = > 循环体 = > 修改初始表达式6 = > 条件表达式 = > 循环体... = > 不成立 = > 修改初始表达式3 =>条件表达式2 => 初始表达式4.… = > 直到条件表达还是2不成立 = > 跳出循环体
若不成立 = > 修改表达式3 = > 条件表达式2 = > 成立【不成立】
若不成立 =>跳出循环体,执行后面的代码
③ 注意事项:
a. 外层循环用来控制行数,内层循环用于控制列数;
b. 外层循环的变量改动一次,内层循环需要从头到尾执行一遍;(外层循环执行一次,内层循环需要跑一圈);
c. 今后开发中,如果遇到几行几列时,使用双重循环,循环的嵌套不宜超过3层。
二、代码
1、Fall
要求用户输入下落时间(整数),并按照公式0.5*9.8*t*t来计算下落的位移并打印出来。其中小数数据使用double类型声明的变量来记录。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 要求用户输入下落时间(整数),并按照公式0.5*9.8*t*t来计算下落的位移并打印出来。
* 其中小数数据使用double类型声明的变量来记录。
* @Date: 2024/1/23 9:38
* @Version: 1.0
*/
public class Fall {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个下落时间(整数)t:");
int t = sc.nextInt();
double x = 0.5 * 9.8 * t * t;
System.out.println("下落位移为:" + x);
}
}
运行结果:
2、Identify01
提示用户输入姓名和年龄,并打印。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入姓名和年龄,并打印
* @Date: 2024/1/23 8:29
* @Version: 1.0
*/
public class Identify01 {
public static void main(String[] args) {
// 提示用户输入姓名和年龄
// 键盘扫描器 表示创建一个Scanner 类型的引用(scanner) 指向Scanner类型的对象,其中System.in可以看成一个键盘
Scanner sc = new Scanner(System.in);
// 提示用户输入姓名和年龄
System.out.println("请输入你的姓名:");
String name = sc.next();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("我叫" + name + ",今年" + age + "岁了!");
}
}
运行结果:
3、Identify02
提示用户输入学号、班级和座右铭,并打印。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入学号、班级和座右铭,并打印
* @Date: 2024/1/23 8:50
* @Version: 1.0
*/
public class Identify02 {
public static void main(String[] args) {
// 提示用户输入学号、班级和座右铭
// 键盘扫描器 表示创建一个Scanner 类型的引用(scanner) 指向Scanner类型的对象,其中System.in可以看成一个键盘
Scanner sc = new Scanner(System.in);
// 提示用户输入学号、班级和座右铭
System.out.println("请输入你的学号:");
String number = sc.next();
System.out.println("请输入你的班级:");
String meclass = sc.next();
System.out.println("请输入你的座右铭:");
String moto = sc.next();
System.out.println("我的学号是" + number + ",我在" + meclass + "班,我的座右铭是" + moto);
}
}
运行结果:
4、Arithmetic
算术运算:加、减、乘、除、取余(包:com.operator)。
package com.operator;
/**
* @Author: ydh 2303
* @description: 算术运算:加、减、乘、除、取余
* @Date: 2024/1/23 9:49
* @Version: 1.0
*/
public class Arithmetic {
public static void main(String[] args) {
//加减乘除取余
int a = 3; // 赋值运算符
int b = 5;
System.out.println(a + b); // 8
System.out.println(b - a); // 2
System.out.println(a * b); // 15
System.out.println(b / a); // 1
System.out.println(b % a); // 2
}
}
运行结果:
5、Add01
a++、++a(包:com.operator)。
package com.operator;
/**
* @Author: ydh 2303
* @description: a++、++a
* @Date: 2024/1/23 10:00
* @Version: 1.0
*/
public class Add01 {
public static void main(String[] args) {
int a = 3;
int b = a++;
System.out.println("b = " + b); // 3
int c = ++a;
System.out.println("c = " + c); // 5
}
}
运行结果:
6、Reduction01
a--、--a(包:com.operator)。
package com.operator;
/**
* @Author: ydh 2303
* @description: a--、--a
* @Date: 2024/1/23 10:03
* @Version: 1.0
*/
public class Reduction01 {
public static void main(String[] args) {
int a = 6;
int b = a--;
System.out.println("b = " + b); // 6
int c = --a;
System.out.println("c = " + c); // 4
}
}
运行结果:
7、ThreeEyes
使用三目运算符判断用户输入的是整数是负数、正数还是零。(包:com.operator)
package com.operator;
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 使用三目运算符判断用户输入的是整数是负数、正数还是零。
* @Date: 2024/1/23 10:06
* @Version: 1.0
*/
public class ThreeEyes {
public static void main(String[] args) {
//提示用户输入一个数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数:");
int number = sc.nextInt();
//使用三目运算符对用户输入的数进行判断
String s = number > 0 ? "你输入的是一个整数" : number == 0 ? "你输入的是0" : "你输入的是一个负数";
System.out.println(s);
}
}
运行结果:
8、Reverse
提示用户输入一个三位数的正数,然后进行逆序处理再打印。(包:com.operator)
package com.operator;
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入一个三位数的正数,然后进行逆序处理再打印
* @Date: 2024/1/23 10:13
* @Version: 1.0
*/
public class Reverse {
public static void main(String[] args) {
//提示用户输入一个三位数的正数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数的正数:");
int number = sc.nextInt();
//逆序处理并打印
System.out.println("逆序排序后的结果:");
System.out.print(number % 10);
System.out.print((number % 100) / 10);
System.out.print(number / 100);
}
}
运行结果:
9、If01
用if语句判断年龄。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 用if语句判断年龄
* @Date: 2024/1/23 10:48
* @Version: 1.0
*/
public class If01 {
public static void main(String[] args) {
//提示用户输入年龄
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
// 用if语句判断年龄
if(age >= 18) {
System.out.println("你可以浏览网页");
}
System.out.println("每天开心快乐");
}
}
运行结果:
10、If02
使用if分支结构,提示用户输入两个数,求最大值。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 使用if分支结构,提示用户输入两个数,求最大值。
* @Date: 2024/1/23 10:51
* @Version: 1.0
*/
public class If02 {
public static void main(String[] args) {
// //提示用户输入两个数
// Scanner sc =new Scanner(System.in);
// System.out.println("请输入两个数:");
// float n1 = sc.nextFloat();
// float n2 = sc.nextFloat();
// if(n1 > n2) {
// System.out.println("最大值为:" + n1);
// } if(n1 < n2) {
// System.out.println("最大值为:" + n2);
// } else {
// System.out.println("二者相等,最大值为:" + n1);
// }
//提示用户输入两个数
Scanner sc =new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
// //对用户输入的两个数进行判断,求最大值
// if(num1 > num2) {
// System.out.println("最大值:" + num1);
// }
// if(num1 < num2) {
// System.out.println("最大值:" + num2);
// }
int max = num1;
if(num1 <= num2) {
max =num2;
}
System.out.println("最大值:" + max);
}
}
运行结果:
11、If03
用if语句判断成绩是否及格。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 用if语句判断成绩是否及格
* @Date: 2024/1/23 11:06
* @Version: 1.0
*/
public class If03 {
public static void main(String[] args) {
//提示用户输入成绩
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的成绩:");
double score = sc.nextDouble();
if(score >= 60) {
System.out.println("恭喜你,及格了,通过考试了!");
} else {
System.out.println("恭喜你,挂科了,继续努力!");
}
}
}
运行结果:
12、If04
使用if-else分支结构,提示用户输入一个整数,判断是负数还是非负数。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 使用if-else分支结构,提示用户输入一个整数,判断是负数还是非负数。
* @Date: 2024/1/23 11:15
* @Version: 1.0
*/
public class If04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = sc.nextInt();
if(number >= 0) {
System.out.println("您输入的整数是一个非负数。");
} else {
System.out.println("您输入的整数是一个负数。");
}
}
}
运行结果:
13、If05
提示用户输入身份信息进行购票,判断身份信息是军人、学生、还是普通人。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入身份信息进行购票,判断身份信息是军人、学生、还是普通人。
* @Date: 2024/1/23 11:33
* @Version: 1.0
*/
public class If05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入身份信息(军人、学生、还是普通人):");
String identify = sc.next();
//对用户输入的身份信息进行判断
if("军人".equals(identify)) {
System.out.println("由于您是军人,享受免票!");
} else if("学生".equals(identify)) {
System.out.println("由于您是学生,享受半价票!");
} else {
System.out.println("由于不是学生和军人,请购买全价票!");
}
}
}
运行结果:
14、If06
提示用户输入高考成绩,判断学校学历。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入高考成绩,判断学校学历。
* 650以上:清北大学
* 550-650:985高校
* 450-550:211高校
* 350-450:一本二本
* 350以下:专科或选择复读
* @Date: 2024/1/23 11:41
* @Version: 1.0
*/
public class If06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入高考成绩:");
int number = sc.nextInt();
if(number >= 650) {
System.out.println("您的学历:可上清北大学");
} else if(number >=550 && number <650) {
System.out.println("您的学历:可上985高校");
} else if(number >=450 && number <550) {
System.out.println("您的学历:可上211高校");
} else if(number >=350 && number <450) {
System.out.println("您的学历:可上一本二本院校");
} else {
System.out.println("您的学历:可上专科或选择复读");
}
}
}
运行结果:
15、Switch01
提示用户输入业绩排名,判断去哪儿玩儿。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入业绩排名,判断去哪儿玩儿。
* @Date: 2024/1/23 15:49
* @Version: 1.0
*/
public class Switch01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的业绩排名:");
int num = sc.nextInt();
switch (num){
case 1:
System.out.println("世界游");
break;
case 2:
System.out.println("欧洲游");
break;
case 3:
System.out.println("亚洲游");
break;
case 4:
System.out.println("国内游");
break;
case 5:
System.out.println("省内游");
default:
System.out.println("游什么游,加班");
}
}
}
运行结果:
16、Switch02
提示用户输入月份,判断当月天数(不考虑闰年)
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 提示用户输入月份,判断当月天数(不考虑闰年)
* @Date: 2024/1/23 15:54
* @Version: 1.0
*/
public class Switch02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int month = sc.nextInt();
// switch (month){
// case 1:
// System.out.println("1月有31天");
// break;
// case 2:
// System.out.println("2月有28天");
// break;
// case 3:
// System.out.println("3月有31天");
// break;
// case 4:
// System.out.println("4月有30天");
// break;
// case 5:
// System.out.println("5月有31天");
// break;
// case 6:
// System.out.println("6月有30天");
// break;
// case 7:
// System.out.println("7月有31天");
// break;
// case 8:
// System.out.println("8月有31天");
// break;
// case 9:
// System.out.println("9月有30天");
// break;
// case 10:
// System.out.println("10月有31天");
// break;
// case 11:
// System.out.println("11月有30天");
// break;
// case 12:
// System.out.println("12月有31天");
// break;
// default:
// System.out.println("输入月份错误!");
// }
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("当月有31天");
break;
case 2:
System.out.println("当月有28天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("当月有30天");
break;
default:
System.out.println("输入月份错误!");
}
}
}
运行结果:
17、For01
打印1-10之间的数字
/**
* @Author: ydh 2303
* @description: 打印1-10之间的数字
* @Date: 2024/1/23 16:16
* @Version: 1.0
*/
public class For01 {
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
System.out.print(i + " ");
}
}
}
运行结果:
18、For02
1-100之间的偶数
/**
* @Author: ydh 2303
* @description: 1-100之间的偶数
* @Date: 2024/1/23 16:18
* @Version: 1.0
*/
public class For02 {
public static void main(String[] args) {
for(int i = 1; i <= 100; i++) {
if(i % 2 == 0) {
System.out.print(i + " ");
}
}
// for(int i = 1; i <= 10; i++) {
// if(i == 5) {
// break; // 跳出循环
// }
// System.out.print(i + " ");
// }
//
// for(int i = 1; i <= 10; i++) {
// if(i == 5) {
// continue; // 继续循环
// }
// System.out.print(i + " ");
// }
}
}
运行结果:
19、While01
while循环
/**
* @Author: ydh 2303
* @description: while循环
* @Date: 2024/1/23 16:33
* @Version: 1.0
*/
public class While01 {
public static void main(String[] args) {
int i = 1;
while(i <= 10) {
System.out.print(i + " ");
i++;
}
}
}
运行结果:
20、While02
跑圈 跑完一圈提示用户是否还能跑,如果不能跑结束。
import java.util.Scanner;
/**
* @Author: ydh 2303
* @description: 跑圈 跑完一圈提示用户是否还能跑,如果不能跑结束。
* @Date: 2024/1/23 16:35
* @Version: 1.0
*/
public class While02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 1;
while(true) {
System.out.println("你已经跑了" + i + "圈,是否继续?");
String str = sc.next();
if("否".equals(str)) {
System.out.println("不行了,跑不动了!");
break;
} else if("是".equals(str)) {
i++;
System.out.println("加油,加油!正在跑第" + i + "圈。");
}
}
}
}
运行结果:
21、DoWhile01
dowhile循环
/**
* @Author: ydh 2303
* @description: dowhile循环
* @Date: 2024/1/23 17:12
* @Version: 1.0
*/
public class DoWhile01 {
public static void main(String[] args) {
int i = 1;
do{
System.out.print(i + " ");
i++;
}while(i <= 10);
}
}
运行结果:
22、DoubleFor01
双层for循环
/**
* @Author: ydh 2303
* @description: 双层for循环
* 打印出:*
* **
* ***
* ****
* ******
* @Date: 2024/1/23 17:23
* @Version: 1.0
*/
public class DoubleFor01 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++){
for (int j = 1; j <= i; j++){
System.out.print("* ");
}
System.out.println();
}
}
}
运行结果:
23、DoubleFor02
九九乘法表
/**
* @Author: ydh 2303
* @description: 九九乘法表
* @Date: 2024/1/23 17:27
* @Version: 1.0
*/
public class Doublefor02 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + (i * j) + "\t");
}
System.out.println();
}
}
}
运行结果:
三、总结
今日内容敲的代码比较多,学习复习回顾了数据类型,运算符,顺序、分支、循环结构体,内容虽多但也比较清楚简单,相较于之前增加了难度,越到后面难度可能还会增大,那就希望自己能继续努力学习!