文章目录
- 算术运算符
- 关系运算符
- 逻辑运算符(重点)
- 逻辑与 &&
- 逻辑 ||
- 逻辑非!
- 短路求值(重点)
- 程序逻辑控制
- 顺序结构
- 分支结构(if else结构)
- switch语句
- 基本语法
- 循环结构
- break
- continue
- 从键盘输入
算术运算符
- 基本四则运算符:加减乘除模(+ - * / %)
int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数
注意:
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是int类型,而且会向下取整
int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);
// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
System.out.println(d);
做除法和取模时右操作数不能为0
int a = 1;
int b = 0;
System.out.println(a / b)
// 运行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)
% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
System.out.println(11.5 % 2.0);
// 运行结果
1.5
两侧操作数据类型不同时向范围大的提升
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2
增量运算符
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
System.out.println(a); // 输出2
a %= 3; // 相当于 a = a % 2
System.out.println(a); // 输出2
关系运算符
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
逻辑运算符(重点)
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。
逻辑与 &&
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
逻辑 ||
语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的,
否则站一边去。
inta=1;
intb=2;
System.out.println(a==1||b==2); //左为真且右为真则结果为真
System.out.println(a==1||b>100); //左为真但右为假则结果也为真System.out.println(a>100||b==2); //左为假但右为真则结果也为真System.out.println(a>100||b>100); //左为假且右为假则结果为假
逻辑非!
语法规则:! 表达式真变假,假变真
int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
短路求值(重点)
在我们判断逻辑关系的正确时有一个需要我们关注的地方就是无论是&&还是||他们都是短路求值在java中取消了0可以表示假1可以表示真,虽然在一定程度上避免了我们出错的概率但是我们还是需要知道的
int m=10;int n=20;
System.out.println(m==0&&10/0==0);
这段程序很明显有个除0错误但是由于前面已经判定m=0为假因此后面的语句不执行直接打印false。
程序逻辑控制
顺序结构
顺序结构比较简单,按照代码书写的顺序一行一行执行
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 运行结果
aaa
bbb
ccc
分支结构(if else结构)
分支结构也就是if和else这里呢其实是和c语言一样的有c语言基础的同学应该都是知道的我只介绍一个重点就是if和else的垂直匹配请看下面的代码
int x = 10;
int y = 10;
if (x == 10)
if (y == 20)
System.out.println("aaa");
else
System.out.println("bbb");
请问最终打印的内容是什么。很明显是bbb因为下面的那个else是匹配离他最近的if的但是我们未来写代码不会这样写因为这是非常不规范的。
switch语句
基本语法
switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
执行流程:
- 先计算表达式的值
- 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
- 当表达式的值没有与所列项匹配时,执行default
代码示例: 根据 day 的值输出星期
int day = 1;
switch(day) {
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("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入有误");
break;
}
多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
double num = 1.0;
比特就业课
break 不要遗漏, 否则会失去 "多分支选择" 的效果
switch 不能表达复杂的条件
switch 虽然支持嵌套, 但是很丑,一般不推荐~
switch(num) {
case 1.0:
System.out.println("hehe");
break;
case 2.0:
System.out.println("haha");
break;
}
break 不要遗漏, 否则会失去 "多分支选择" 的效果
switch 不能表达复杂的条件
switch 虽然支持嵌套, 但是很丑,一般不推荐~
循环结构
循环结构主要就是三种while,for,do while日常在java的使用频率的话for和while差不多dowhile比较少不怎么用。
下面是各自的模板
//while
while(条件){
执行的代码
}
//for
for(int i=(某个值);i<(某个值)/i>(某个值);i++/i--){
代码块
}
//dowhile
do{
代码块
}while(判断条件);//前面都是判断在前执行在后他是执行在前判断在后比如说下面这个例子
int x = 10;int y = 20;do {x++;System.out.println(x);}while(x<9);}//这里就会打印11
我们发现, 当一个代码中带有多重循环的时候, 代码的复杂程度就大大提高了. 而比较复杂的代码就更容易出错.
后面我们会采用更简单的办法来解决这个问题.
注意事项
- 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
- 和 if 类似, while 后面的 { 建议和 while 写在同一行.
- 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.
break
break 的功能是让循环提前结束.
代码示例: 找到 100 - 200 中第一个 3 的倍数
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
// 执行结果
找到了 3 的倍数, 为:102
continue
continue 的功能是跳过这次循环, 立即进入下次循环.
代码示例: 找到 100 - 200 中所有 3 的倍数
int p=100;while(p<=200){if(p%3!=0){p++;continue;}System.out.println(p);p++;}
从键盘输入
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0