小白的JAVA课堂(JAVA语言基础)

小白的JAVA课堂(JAVA语言基础)

逻辑运算符

逻辑运算符有:

&(并且),|(或者),!(非),^(异或),&&(短路与),||(短路或)

逻辑运算符的运算解果也是boolean类型,

&:多个条件同时成立,判断结果真假,&符号两段只要任意一边的表达式的结果是false,那么最终结果为false,只有结果都为true,结果为true。

|:两段的表达式,只要有任意一段为TRUE,其最终结果为true。,只有两段表达式结果都是false,其结果为false。

!:取反。

^:相同为false,不同为true。

这里可以比作男女关系:男男不符合人文关系,女女也一样,只有男女符合。(我们老师如是说到,看到这里我就想问女人什么时候才能站起来,气抖冷。。。。。。老拳师了,开玩笑啊)

&&与||

先说明&与&&,和 | 和 || 的区别

&与&&在运算结果上没有区别,但是在运算效率上有区别。

我们先看实操

小白的JAVA课堂(JAVA语言基础)_第1张图片

我们看到,"&"的逻辑下,左端表达式为false,但是后面的“b”输出为11,而当在“&&”的逻辑下,左端也为false,这时候我们中断了,短路了(不然我们为什么叫他是中断与呢),右端就不计算了,所以“D”的输出还是20。所以此处的规则就是,当&&的左端为 false,那么之后就不运算了,但是左端是true时,我们依旧会继续运算。

||:而在短路或时,系统为了判断到底是true呢,还是false呢?我们就会在程序中发现(如下图),左端是true时,这时就不再继续运行计算了,因为系统已经知道最终结果是TRUE了,没必要了,但是当左端是false时,系统此时还判断不了,所以继续运算。

小白的JAVA课堂(JAVA语言基础)_第2张图片

就像生活中的例子,一旦得知了一个女人已经有了一个强大可靠的男人,这时候我们也不会继续追了,我们就在追她的道路上短路了(听者伤心,闻者流泪)

位运算符

&(与),|(或),^(异或),~(按位取反),<<(左移),>>(右移),>>>(无符号右移)

注意事项:位运算是直接对二进制补码进行运算。

我们还要注意区分,位运算符和逻辑运算符的前三个不是一样吗?我们怎么区分呢?

& | ^左右两段跟的是数值,就是位运算符,两段跟的是布尔类型,就是逻辑运算符。

小白的JAVA课堂(JAVA语言基础)_第3张图片

规则。

&:有0则0

|:有1则1

^:相同则0,不同为1

~:包括符号位,0变1,1变0.

<<:将一个数字的补码进行左移N个,左端移动的N个个数丢去,右端补0

》:右移时,最高位是0,右移后,补0,做高位是1,右移之后补1.

》》》:不管最高位是1是0,我们右移后都补0

还有一下神奇的特点。

1.一个数,被另一个书^异或两次,那么该数不便。一个数与自己异或结果是0.

<<:把数据乘以2的移动次幂,就是数据的结果,如3<<2. 3*2^2=12

》:把数据除以2的移动次幂,就是数据的结果,如10 10/2^2=2(此处结果只保留整数结果,如果除不了,则为0).

案例,值交换。方法一:

int a=10;
int b=20;
a=t;
a=b;
b=t;
//此时数据达成交换

方法二:

int a=10;
int b=20;
a=a^b;//异或一次
b=a^b;//异或两次,此时变回来了,给b赋值了,a^b^b
a=a^b;//异或三次,给a赋值.a^a^b
//这里用到的是上面的特点,一个数被另一个书异或两次,其数不变。那我再异或以此,不就变了嘛。

方法三:

int a=10;
int b=20;
a=a+b;
b=a-b;
a=a-b;//通过加减运算	

方式四:

int a=10;
int b=20;
b=(a+b)-(a=b);

三元运算符

语法:表达式?—>结果1:结果2

如果表达式的值是true,那么返回结果1,如果是false,那么返回结果2.

int a=100;
int b=200;
int max=a>b?a:b;

在这里插入图片描述

三数比较

int a=100;
int b=200;
int c=300;
int max1=a>b?a:b;
int max2=max1>c?max1:c;

语句(顺序结构语句)

流程语句

控制程序执行过程中,各条语句的执行顺序

流程分类

1.顺序结构 很简单,以此从上到下,以此执行

2.选择结构

3.循环结构

选择结构if语句格式及其使用

选择性的执行

有:

if 语句和switch语句

if语句的格式:

1.if(布尔类型的值或者布尔类型结果的表达式){需要执行的代码},这个值考虑true的情况

if(true){
  System.out.println("输出的结果");
}

在语句中,小括号里面如果是true,那么{}里面就会执行,否则不行

2.真假情况都考虑:if(布尔条件){真的情况处理}else{假的情况处理}

public static void main(String[] args) {
                int a=10;
                int b=20;
                if(a==b){
                    System.out.println("123123123");
                }else{
                    System"2123123123123123123");
        }
        System.out.println();

这里有个知识点,现在我们进入编译程序,我们看到的输出为打印出来的,但是我们执行完后还要用到输出数据,就需要在加以恶定义变量

int a=10;
int b=29'
int max=0;
.
.
.
.
.
.
System.out.println();
int mun=10;
System.out.println(max+mun);

关于if语句的嵌套使用

import java.util.Scanner;

public class DEMO_if {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第1个数");
        int n1 = sc.nextInt();
        System.out.println("请输入第2个数");
        int n2 = sc.nextInt();
        System.out.println("请输入第3个数");
        int n3 = sc.nextInt();
        int max=0;
        if(n1>n2){
            if(n1>n3){
                max=n1;
            }else{
                max=n3;
            }
        }else{
            if(n2>n3){
                max=n2;
            }else{
                max=n3;
            }

        }
   System.out.println(max);

    }
}

还有一种写法是:

 Scanner sc = new Scanner(System.in);
        System.out.println("请输入第1个数");
        int n1 = sc.nextInt();
        System.out.println("请输入第2个数");
        int n2 = sc.nextInt();
        System.out.println("请输入第3个数");
        int n3 = sc.nextInt();
        int max=0;
        if(n1>n2&&n1>n3){
        max=n1;
        if(n2>n1&&n2>n3){
        max=n2;
        if(n3>n1&&n3>n2){
        max=n3;
        }
       }
     }

逻辑由自己来定,只要能说得通,理得顺,就可以了

3.多重条件选择

语法:if(条件){执行的代码}else if(条件){执行的代码}。。。。。。。。。。else{执行的代码}

例子,根据成绩的范围输出优良中差。

小白的JAVA课堂(JAVA语言基础)_第4张图片

三元表达式和if else的区别

能用三元表达式写出来的,if else一定能写出来,反之则不一定能写出来。

switch语句

语法:

 int a=10;
       switch (a){
           case 123:
               System.out.println("ok");
               break;
           case 10:
               System.out.println("ok");
               break;
           case 138:
               System.out.println("ok");
               break;
               default:
                   System.out.println("no");
                   break;
       }
    }
}

switch语句注意事项

1.switch所支持的类型:byte,short,int,char,JDK1.5之后,支持枚举类型,JDK1.7之后,支持字符串类型

2.case匹配项:只能跟常量,不能写变量;

多个case的值不能重复;

多个case项的数据类型数据类型要一致。

3.default:所有case项都没有匹配上,执行default 的默认项;

default项不是必须要提供的,也不是必须要放在最后面

4.break:用来解释switch语句的;

如果说我们故意不写,这时不会发生报错,但是会发生case穿透,我们是可以利用的(我在想法穿机制是不是这样来的。。。。。

if 和switch 的区别

if是对布尔类型的判断,是对结果的判断,对范围,对常量进行判断

switch只能弄些常量进行判断,他不能判断范围

循环语句

for

语法:for(int a=初始值;a<目标值;a++){}

小白的JAVA课堂(JAVA语言基础)_第5张图片

水仙花案例

小白的JAVA课堂(JAVA语言基础)_第6张图片

while循环

语法:

 int a=1;
        while (a <= 10) {
            System.out.println(a);
            a++;
            }

do while

在这里插入图片描述

语法:do{}while();

我们的使用规则是:

我们知道循环的次数:用for

如果不知道循环次数,用while,但是要知道结束循环的条件

obhQCS7W-1586439616721)]

水仙花案例

[外链图片转存中…(img-UpMASpUF-1586439616722)]

while循环

语法:

 int a=1;
        while (a <= 10) {
            System.out.println(a);
            a++;
            }

do while

[外链图片转存中…(img-dx6R39Ur-1586439616723)]

语法:do{}while();

我们的使用规则是:

我们知道循环的次数:用for

如果不知道循环次数,用while,但是要知道结束循环的条件

你可能感兴趣的:(小白的JAVA课堂(JAVA语言基础))