/和%的区别
1./:除法,得到商,符号相同为正,符号不同为负。
2.%:取余,得到余数,被除数符号为正,余数为正;被除数符号为负,余数为负。
++和–运算符
1.作用:自增自减运算符,++就是加一,–就是减一。
2.++和–在运算的时候,在操作数前面,先自增,再操作;
在操作数后面,先运算,再自增。
class OperatorDemo(
public static void main(){
int a = 3;
System.out.println(a); //3
a++;
System.out.println(a); //4
++a;
System.out.println(a); //5
int b = a++;
System.out.println(b); //5
System.out.println(a); //6
int c = ++a;
System.out.println(c); //7
System.out.println(a); //7
}
}
赋值运算符
1.基本:=
2.扩展:+=,-=
扩展的复制运算符隐含了强制类型转换:
int a = 10;
a+=5;
a=(a的数据类型)(a+5);
关系运算符
1.关系运算符:==,!=,>,<,>=,<=
2.注意:
-比较运算符的结果肯定为布尔值;
-=是赋值,==才是比较是否相等
class OperatorDemo2{
public static void main(String[] args){
int a = 10;
if(a==10){
System.out.println(a);
}
if(a=3){}//这里就会报错
}
}
逻辑运算符
1.逻辑运算符:&,|,!,^,&&,||
2.注意:逻辑运算符用于连接关系表达式
3.功能
&:有false则结果为false
|:有true则结果为true
!:改变结果,取反
^:相同false,不同true
&&:与&结果一样,但是&&具有短路效果,当&&左边为false时,它的右边不执行
||:与|结果一样,但是&&具有短路效果,当&&左边为true时,它的右边不执行
public class OperatorDemo3{
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
//&运算两边连接的布尔值,只要有一个为false整体结果就为fasle
System.out.println((a>c)&(a>b));//false&false=false
System.out.println((a<c)&(a<b));//true&true=true
System.out.println((a>c)&(a<b));//false&true=fasle
System.out.println((a<c)&(a>b));//true&false=false
System.out.println("-----------------------");
//|运算两边连接的布尔值,只要有一个为true就为true
System.out.println((a>c)|(a>b));//false|false=false
System.out.println((a<c)|(a<b));//true|true=true
System.out.println((a>c)|(a<b));//false|true=true
System.out.println((a<c)|(a>b));//true|false=true
System.out.println("-----------------------");
//!运算,false变true,true变false
System.out.println(!(a>c));
System.out.println("-----------------------");
//^运算两边链接的布尔值,相同为false,不同为true
System.out.println((a>c)^(a>b));//false^false=false
System.out.println((a<c)^(a<b));//true^true=fasle
System.out.println((a>c)^(a<b));//false^true=true
System.out.println((a<c)^(a>b));//true^false=true
}
}
下面是&&与||的短路效果演示代码:
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a>c)&&(a>b));//false&&false=false
System.out.println((a<c)&&(a<b));//true&&true=true
System.out.println((a>c)&&(a<b));//false&&true=fasle
System.out.println((a<c)&&(a>b));//true&&false=false
System.out.println("-----------------------");
//|运算两边连接的布尔值,只要有一个为true就为true
System.out.println((a>c)||(a>b));//false||false=false
System.out.println((a<c)||(a<b));//true||true=true
System.out.println((a>c)||(a<b));//false||true=true
System.out.println((a<c)||(a>b));//true||false=true
System.out.println("----------------------");
int x = 3;
int y = 4;
//System.out.println(x++>3&&y++>4);
//false&& =fasle,&&会存在一个短路效果,前面链接的布尔值为fasle,
//整体就为fasle,所以后面的判断不执行
System.out.println(x);//4
System.out.println(y);//4
System.out.println(x++>3||y++>4);
//||运算链接的布尔值,如果前面的布尔值为true,连接的整体结果就为true,后面的不执行
System.out.println(x);//4
System.out.println(y);//5
}
}
三元运算符
1.格式: ? :
(比较表达式)?表达式1:表达式2;
2.执行流程:
如果比较表达式结果为true,运算后的结果为表达式1;
如果比较表达式结果为false,运算后的结果为表达式2。
获取三个数中最大值代码:
class OperatorDemo5{
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 15;
int d = (((a>b)?a:b)?c)?((a>b)?a:b):c;
System.out.println(d); //20
}
}
键盘录入数据
键盘录入数据三步曲:
1.导包:import java.util.Scanner;
2.创建键盘录入对象:Scanner sc = new Scanner(System.in);
3.获取键盘录入数据:int a = sc.nextInt();
package com.edu_01;
//1.导包
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//2.创建键盘录入对象
Scanner sc = new Scanner(System.in);
//3.获取键盘录入数据,程序在此阻塞,等待接受键盘录入
int num = sc.nextInt();
System.out.println(num);
}
}
if语句
1.if语句格式1:
if(比较表达式){
语句体;
}
执行流程:首先判断比较表达式看其结果是true还是false,如果是true就执行语句体,如果是false就不执行语句体。
2..if语句格式2:
if(比较表达式){
语句体1;
}else{
语句体2;
}
执行流程:首先判断关系表达式看其结果是true还是false,如果是true就执行语句体1,如果是false就执行语句体2。
3..if语句格式3:
if(比较表达式1){
语句体1;
}else if(比较表达式2){
语句体2;
}else if(比较表达式3){
语句体3;
}…
else{
语句体n+1;
}
执行流程:首先判断关系表达式1看其结果是true还是false,如果是true就执行语句体1,如果是false就继续判断关系表达式2看其结果是true还是false,如果是true就执行语句体2,如果是false就继续判断关系表达式…看其结果是true还是false…如果没有任何关系表达式为true,就执行语句体n+1。
需求:键盘录入学生成绩,根据学生成绩判断,输出学生等级。
90-100 A
80-89 B
70-79 C
60-69 D
60以下 E
package com.edu_01;
//导包
import java.util.Scanner;
public class IfDemo3 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//获取键盘录入数据
System.out.println("请输入你的学生成绩");
int score = sc.nextInt();
//拿到成绩使用if做判断
if(score>=90&&score<=100){
System.out.println("成绩等级是A");
}else if(score>=80&&score<=89){
System.out.println("成绩等级是B");
}else if (score>=70&&score<=79) {
System.out.println("成绩等级是C");
}else if(score>=60&&score<=69){
System.out.println("成绩等级是D");
}else if (score>=0&&score<60) {
System.out.println("不及格");
}else {
System.out.println("输入成绩不再考核范围内");
}
}
}
switch语句
1.格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
2.执行流程:首先计算出表达式的值;其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束;最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
3.注意:
-case后面只能是常量,不能是变量。
-多个case后面的值不能出现相同的。
-default可以省略,但是不建议。
-break可以省略,但是不建议。容易出现case穿透。
-default可以在任意位置,建议在最后。
-switch语句的结束条件
–遇到break
–执行到末尾
需求:键盘录入一个数字(1-7),输出对应的星期几。
package com.edu_01;
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
int a = 4;
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//获取键盘录入数据
System.out.println("请输入数字");
int day = sc.nextInt();
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;
}
}
}
for循环
1.格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
2.执行流程:
-执行初始化语句
-执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
-执行循环体语句
-执行控制条件语句
-回到第二步
需求:请在控制台输出数据1-10。
for(int i=1;i<=10;i++){
System.out.println(i);
}
需求:请在控制台输出数据10-1。
for(int i=10;i>0;i--){
System.out.println(i);
}
需求:求出1-100之间偶数和。
分析:
如何判断数据是偶数。
x%2==0;
public class ForDemo {
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i<=100;i++){
//取余操作,判断偶数
if (i%2==0) {
sum+=i;
}
}
System.out.println(sum);
}
}
while循环
1.格式:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
2.执行流程:
-执行初始化语句
-执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
-执行循环体语句
-执行控制条件语句
-回到第二步
需求:请在控制台输出10次”HelloWorld” 。
public class WhileDemo {
public static void main(String[] args) {
//初始化语句
int i = 0;
//条件判断语句
while(i<10){
//循环语句
System.out.println("helloworkd");
//控制条件语句
i++;
}
}
}
需求:求出1-100之间偶数和。
public static void main(String[] args){
int i = 0;
int sum = 0;
while(i<=100){
if(i%2==0){
sum+=i;
}
i++;
}
System.out.println(sum);
}
do while语句
1.格式:
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
2.执行流程:
-执行初始化语句
-执行循环体语句
-执行控制条件语句
-:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
-回到第二步
break使用场景
1.使用场景:
-在switch语句中
-在循环语句中
2.遇到break,就中断整个循环;默认情况下,break只能中断它所属的那个循环。
continue使用场景
1.使用场景:在循环语句中。
2.遇到continue,退出本次循环。