运算符
逻辑运算符
逻辑运算符
&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
关系表达式:a == b
结论:
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
&&和&的区别
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行,同理||和|的区别,开发中常用 &&,||,!
public class OperatorDemo {
public static void main(String[] args) {
// &(并且) , |(或者), 和 &&(短路与) , ||(短路或) 的区别
int a=1;
int b=2;
boolean flag=a==1&(b++)>2;
System.out.println(flag);//false
System.out.println(b);//3
// flag = a > 1 & (b++) > 2;
//& 两端都会去运算
//&& 左端为false 右端不运算了 左端为true,那右端必须运算
flag=a>1&&(b++) > 2;
System.out.println(flag);//false
System.out.println(b);//4
int num1=10;
int num2=20;
// | 两端都会运算
// || 左端为true,右端不运算,左端为false,右端就得运算
boolean f=num1==10|++num2>20;
f= num1 <= 10 || ++num2 > 20;
System.out.println(f);//true
System.out.println(num2);//
}
}
位运算符
位运算符有哪些
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意事项:位运算是直接对二进制补码进行运算。
结论:
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反 0变1 1变0
public class MyDemo {
public static void main(String[] args) {
// &(与),|(或),^(异或), ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
// 注意事项:位运算是直接对二进制补码进行运算。
byte a = 3; //
byte b = 4; //
// 0 0000011 补码
// 0 0000101 补码
// --------------------------------------------
// 0 0000001
System.out.println(3 & 5);
System.out.println(a | b);
System.out.println(~3);
System.out.println(3 >> 2); //把3右移2位 00 0 00000
System.out.println(3 >>> 2); //把3右移2位 00 0 00000
System.out.println(-3 >> 2); //把3右移2位 00 0 00000
System.out.println(-3 >>> 2); //把3右移2位 00 0 00000
System.out.println(3 << 2);
//00001100
// 结论:一个数 被另一个数位异或两次该数不变
System.out.println(2 ^ 3 ^ 3);
System.out.println(2 ^ 5 ^ 2);
System.out.println(10 ^ 10);
// 结论 :<< :把 << 左边的数据乘以2的移动次幂 例如 10 << 3 结果 10 * 2 ^ 3 = 80
//>> :把 >> 左边的数据除以2的移动次幂 例如 40 >> 3 结果 40 / 2 ^ 3 = 5*/
System.out.println(2 * 4);
System.out.println(2 << 2);
}
}
三元运算符
A:三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; a=50
B:三元运算符的执行流程
计算关系表达式的值,如果为true, 运算后的结果是表达式1;
如果为false,运算后的结果是表达式2;
C:案例演示
public class MyDemo2 {
public static void main(String[] args) {
int a=100;
int b=200;
int r=a>b?a:b;
System.out.println("最大值是:"+r);
int str=a==b?"相等":"不相等";
System.out.println(str);
}
}
键盘录入数据
实现键盘录入
a:导包
格式:
import java.util.Scanner;
位置:
在class上面。
b:创建键盘录入对象
格式:
Scanner sc = new Scanner(System.in);
c:通过对象获取数据
格式:
int x = sc.nextInt();
键盘录入:键盘录入两个数据,并对这两个数据求和,输出其结果
public class ScannerDemo {
public static void main(String[] args) {
//Java给我们提供了一个类 Scanner
//Scanner 可以从键盘录入数据
//1.导入包
//2.创建该类对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
//获取用户从键盘上输入的数据
int num1= sc.nextInt();
System.out.println("请输入第二个整数");
int num2 = sc.nextInt();
//获取两个数的最大值
int max=num1>=num2?num1:num2;
System.out.println("最大值是:"+max);
}
}
流程控制语句
顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都
是这样执行的,总的来说:写在前面的先执行,写在后面的后执行.
选择结构
if语句几种格式
if(比较表达式或者是boolean类型的值) {
语句体;
}
public class IFDemo {
public static void main(String[] args) {
int a=3;
int b=4;
if(a<b){ //(表达式)括号里面的结果是false {}大括号里面的代码就不执行
System.out.println("这条语句执行了");
}
}
}
if(比较表达式) {
语句体1;
}else {
语句体2;
}
public class IFDemo2 {
public static void main(String[] args) {
if(3<4){
System.out.println("真");
}else{
System.out.println("假");
}
}
}
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
…
else {
语句体n+1;
}
public class MyDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的成绩 百分制");
double socre = scanner.nextDouble();
//对成绩进行范围的判断
if (socre < 60 && socre >= 0) {
System.out.println("成绩不及格");
} else if (socre >= 60 && socre < 75) {
System.out.println("差");
} else if (socre >= 75 && socre < 85) {
System.out.println("中");
} else if (socre >= 85 && socre < 95) {
System.out.println("良好");
} else if (socre >= 95 && socre < 100) {
System.out.println("优秀");
} else if (socre == 100) {
System.out.println("满分");
} else {
System.out.println("成绩不合法");
}
}
}
switch语句的格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
…
default:
语句体n+1;
break;
}
public class SwitchDemo {
public static void main(String[] args) {
short num = 10;
//switch (num) 小括号里面都支持哪些数据类型:
// byte short int char
//case 的值只能是常量
//多个case项的数据类型要一致
//break 结束 switch 语句 可以不要,不要会发生一种现象,这种现象叫做case穿透
//default:项 可以写,也可以不要 位置前后没有关系
switch (num) {
case 10:
System.out.println("10这个项匹配上了");
break;
case 20:
System.out.println("20这个项匹配上了");
break;
case 30:
System.out.println("30这个项匹配上了");
break;
case 40:
System.out.println("40这个项匹配上了");
break;
case 50:
System.out.println("50这个项匹配上了");
break;
case 100:
System.out.println("100这个项匹配上了");
break;
default:
System.out.println("当所有的case项都没有匹配上时,就会执行默认项");
break;
}
}
}
选择结构if语句和switch语句的区别
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
循环语句
循环结构for语句的格式:
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
public class ForDemo {
public static void main(String[] args) {
i=0;i<10;i++){
System.out.println("祖国生日快乐!!!");
}
}
}
循环结构while语句的格式:
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
public class WhileDemo {
public static void main(String[] args) {
int i=1; //循环的初始值
while (i<=10){ //条件为true 循环继续,为false 循环结束
System.out.println("你好!");
i++; //控制循环的语句不要忘了
}
}
循环结构do…while语句的格式:
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
public class WhileDemo2 {
public static void main(String[] args) {
//先执行do里面的代码一次,后去判断循环条件是否成立,如果成立,继续循环,不成立循环终止
int i=1;
do{
System.out.println("先执行一次");
i++;
}while (i<=10);
}
循环结构三种循环语句的区别
(1):do…while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
(2):A: 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
因为变量及早的从内存中消失,可以提高内存的使用效率。
B:建议优先考虑for循环,然后是while循环 ,最后是do…while循环
控制跳转语句
break 中断语句
break的使用场景
(1):在选择结构switch语句中
(2):在循环语句中
注意:离开使用场景的存在是没有意义的
作用
a:退出单层循环
b:退出多层循环(几乎不使用)
要想实现这个效果,就必须知道一个东西;带标签的语句;
格式:标签名:语句
public class ForDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
//循环到5的时候让循环终止调用
System.out.println(i);
if (i == 5) {
break; //终止循环
}
}
}
}
continue 继续语句
continue的使用场景
(1):在循环语句中
(2):离开使用场景的存在是没有意义的
作用
a:跳出一次循环,执行下一步操作
public class ForDemo2 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if(i%2==1){
continue; //跳过一次循环,继续下一次循环
}
System.out.println(i);
}
}
}
return 返回语句
作用
return 就是退出一个方法。
跳转到上层调用的方法。