提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
Java零基础学习(逻辑运算符 键盘录入 选择结构)
Java语言基础
-
运算符
1.逻辑运算符有哪些 &(并且)当逻辑两端运算结果同时为true时结果才为true |(或者) 当运算两端结果有一个结果为true时,结果为true !(非) 取反 ^(异或)相同为false不同为true &&(短路与) ||(短路或) 2.逻辑运算符一般用于连接boolean类型的表达式或者值。 3.&&(短路与)与&运算结果没有区别知识在运算效率上有区别,&运算符的两端表达 式都会运行,&&,当左端的表达式左端为false时,右端就不会执行,因为可以直接判定 结果为false。 ||(短路或),区别与& &&同理,当||左端的表达式取值为true时,右的表达式 就不会执行,因为可以直接判定结果为true。 例: int i=1; int i=1; boolean c=(i<0&i++>1); boolean c=(i<0&&i++>1); System.out.println(i); System.out.println(i); 输出结果是2,因为i++运行了; 输出结果是1,因为&&左边的结果是false,所以&&右边的表达式不执行,i还是1。 int i=1; int i=1; boolean c=(i>0|i++>1); boolean c=(i>0||i++>1); System.out.println(i); System.out.println(i); 输出结果是2; 输出结果是1,因为||左边的结果是true,所以||右边的表达式不执行,i还是1;
1.位运算符有哪些(位运算符是直接对补码进行运算,运算效率高一些。) &(与) 有0则0 例 int a=1&2; int a=(-2)&(-3) System.out.println(a); System.out.println(a); 1的二进制补码是00000001; -2的二进制补码是11111110; 2的二进制补码是00000010; -3的二进制补码是11111101; 则求出的a的补码是00000000; 则求出的a的补码是11111100; 所以a的结果是0. 所以a的结果是-4 ※计算机是对补码进行运算,我们看到的是原码,所以在计算过后要将补码推回到原码,正数的原码补码相同,负数一定要注意。 |(或) 有1则1 与&的运算过程相同。 ^(异或) 相同则0,不同则1。 ~(按位取反)0变1,1变0,符号位也要取反。 <<(左移) 将二进制的补码向左移,空位补0,被移除的最高位丢弃。 >>(右移) 将二进制的补码向右移,被移位的最高位是0,就往空位补0,最高位是1就往空位补1 >>>(无符号右移) 被移位的二进制最高位无论是0还是1,空缺位都补0。 2.结论 << : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80 >> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5 ^的特点:一个数据被另一个数据位异或两次,该数本身不变。 例:将两个数值交换 方法1:找一个中间变量 方法2:用位异或的性质 int a=10; int a=10; int b=20; int b=20; int t; a=a^b; t=a; b=a^b;//a^b^b b=a a=b; a=a^b;//a^b^a a=b b=t; 结果是a=20,b=10; 结果a=20,b=10。 方式3: 方式4: int a=10; int a=10; int b=20; int b=20; a=a+b; b=(a+b)-(a=b); b=a-b; a=a-b; 结果是a=20,b=10; 结果是a=20,b=10;
1.三元(三目)运算符的格式 (关系表达式)?表达式1:表达式2; int a=(10>20)?30:50;//结果a=50 2.三元运算符的执行流程 计算关系表达式的值,如果位true,运算结果取表达式1; 如果为false,运算结果取表达式2。 3.获取两个数中的最大值 int a=10; int b=20; int max=(a>b)?a:b; 获取三个数中的最大值 int a=10; int b=20; int c=30; int max=(a>b)?a:b; max=(max>c)?max:c;
-
键盘录入
1.为什么要使用键盘录入数据
a:为了让程序的数据更符合开发的数据
b:让程序更灵活一些
2.如何实现键盘的录入呢?
先按照格式来
a:导包
格式:
import.java.util.Scanner;
位置:
在class上面。
b:创建键盘录入对象
格式:
Scanner sc=new Scanner(System.in);
c:通过对象获取数据
格式:
int a=sc.nextInt();
3.案例演示
a:键盘录入一个整数,并输出到控制台。
import java.util.Scanner;
class A
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数");
int a=sc.nextInt();
System.out.println(a);
}
}
b:键盘录入两个整数,获取这两个整数的最大值
import java.util.Scanner;
class A
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数");
int a=sc.nextInt();
System.out.println("请输入第二个整数");
int b=sc.nextInt();
int max=(a>b)?a:b;
System.out.println("最大的数是:"+max);
}
}
-
流程控制语句
1.什么是流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。 也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。 而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能 2.流程控制语句的分类 顺序结构 选择结构 循环结构
1.顺序结构 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。 总的来说:写在前面的先执行,写在后面的后执行 2.执行流程: 从上往下,依次执行。
-
选择结构if语句
概述:也被称为分支结构。 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断, 逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。 1.:选择结构的分类 if语句 switch语句 2.if语句有几种格式 格式1 a.格式 if(比较表达式或者是boolean类型的值) { 语句体; } b.执行流程: 先计算比较表达式的值,看其返回值是true还是false。 如果是true,就执行语句体; 如果是false,就不执行语句体 c.练习 判断两个数据是否相等 int a=10; int b=10; if(a==b){ System.out.println("两个数字相等"); } 当两个数字相等时会输出两个数字相等,当两个数字不相等时不输出。 也可以使用键盘录入两个文字。 格式2 a.格式 if(比较表达式) { 语句体1; }else { 语句体2; } 注意事项:else后面是没有比较表达式的,只有if后面有。 b.执行流程: 首先计算比较表达式的值,看其返回值是true还是false。 如果是true,就执行语句体1; 如果是false,就执行语句体2; c.练习 (1)获取两个数据中较大的值 int a=10; int b=10; if(a>=b){ System.out.println("较大的数是"+a); }else{ System.out.println("较大的数是"+b); } 可以使用键盘录入 (2)判断一个数据是奇数还是偶数,并输出是奇数还是偶数 import java.util.Scanner; class B{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); if(a%2==0){ System.out.println("这个数是偶数"); }else{ System.out.println("这个数是奇数"); } } } 格式3 a.格式: if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } ... else { 语句体n+1; } b.执行流程 首先计算比较表达式1看其返回值是true还是false, 如果是true,就执行语句体1,if语句结束。 如果是false,接着计算比较表达式2看其返回值是true还是false, 如果是true,就执行语句体2,if语句结束。 如果是false,接着计算比较表达式3看其返回值是true还是false, ... 如果都是false,就执行语句体n+1 c.练习 键盘录入一个成绩,判断并输出成绩等级 90~100 A等。 80-89 B等。 70-79 C等。 60-69 D等。 60以下 E等。 import java.util.Scanner; class A{ public static void main(String[] args) { System.out.println("请输入成绩0---100"); Scanner sc=new Scanner(System.in); int cj=sc.nextInt(); if(cj>=90&&cj<=100){ System.out.println("A等"); }else if(cj>=80&&cj<=89){ System.out.println("B等"); }else if(cj>=70&&cj<=79){ System.out.println("C等"); }else if(cj>=60&&cj<=69){ System.out.println("B等"); }else if(cj<60){ System.out.println("E等"); } } }
1.比较表达式无论简单还是复杂,结果必须是boolean类型 2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。 3.一般来说:有左大括号就没有分号,有分号就没有左大括号
if和三元表达式 能用三元表达式写出来的if也能写出来,但是反过来用if写出来的三元表达式不一定能写出来
-
选择结构switch语句
1.:switch语句的格式 switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; case 值3: 语句体3; break; .... default: 语句体n+1; break; } 2.switch语句的格式解释 (1):switch表示这是switch语句 表达式的取值:byte,short,int,char JDK5以后可以是枚举(什么是枚举,以后再讲) JDK7以后可以是String (2):case后面跟的是要和表达式进行比较的值 (3):语句体部分可以是一条或多条语句 (4):break表示中断,结束的意思,可以结束switch语句 (5):default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似 3.执行流程 先计算表达式的值 然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句
1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的值 2.default可以省略吗? 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 3.break可以省略吗? 可以省略,但是结果可能不是我们想要的。 会出现一个现象:case穿透。 case穿透是指代码从对应的语句开始执行,如果没有break,就会再往下执行下去。 最终我们建议不要省略 4.default一定要在最后吗? 不是,可以在任意位置。但是建议在最后。 5.switch语句的结束条件 a:遇到break就结束了 b:执行到末尾就结束了
键盘录入月份,输出对应的季节 Scanner sc=new Scanner(System.in); int a=sc.nextInt(); switch(a){ case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; } 有时候也可以使用case穿透现象来使代码写起来更容易。
-
选择结构if语句和switch语句的区别、
if它要的条件是布尔类型的,它既可以对常量进行选择,也可以对范围进行选择 switch是对几个常量进行选择。
-
-
总结
今天我们学完了基础的运算符,还学习了键盘录入和选择结构的语句后面我们将学习循环结构语句,和语句的嵌套使用,希望大家在下面可以多敲多练,打好基础