3.Java运算符及键盘输入

目录

一、什么是运算符

二、算数运算符

1.基本四则运算符(加减乘除模)

加+:

减-、乘*:

 除/、模%:

2.增量运算符(++、--)

自增运算符(++)

自减运算符(--)

 三、关系运算符

四、逻辑运算符

1.&&与

2.||或

3.!非 

4.短路求值

 五、位运算符

1.&与

2.|或

3.^异或

4、按位取反~(一元)

六、移位运算符(<<左移、>>右移、>>>无符号右移)

1.<<左移

2.>>右移

3.>>>无符号右移

七、复合赋值算符(+=、*=、/=、%=……)

八、条件运算符(表达式?表达式:表达式)

九、输入、输出

1.输出

2.输入


一、什么是运算符

运算符就是计算机对操作数进行的操作的符号,就像是数学中的各种运算有不同的符号一样,运算符也是这样。运算符也有很多种类如算术运算符(+加、-减、*乘、/除、%取余)、关系运算符(==等、!=不等、>、<、>=、<=)、逻辑运算符(&&逻辑与、||逻辑或、!逻辑非)、位运算符(&与、|或、^亦或、~按位取反、<<左移运算符、>>右移运算符、无符号右移>>>)、赋值运算符(=)、复合赋值运算符(+=、-=、*=……)、条件运算符(表达式?表达式:表达式)、instanceof运算符(下一个博客讲)。

二、算数运算符

1.基本四则运算符(加减乘除模)

加+:

为什么不用a+b=30的形式呢?

因为如果在同一个println输出语句中,当前面最开始是字符串,那后面的变量或者表达式就会直接转换成字符串输出。

当然可以用a+b=30,其表达式直接加一个括号构成复合表达式即可就可以解决

减-、乘*:

 除/、模%:

对于除法算术运算符和取模算数运算符中右边都不能为0,就是数学中的除数不能为0一样

对于除法算术运算符来说只要一边是浮点数,则输出均为浮点数

对于取余算数运算符中,除数和被除数均可以是浮点数也可以正常输出,但是没有任何意义,因为数学中取余只有整数取余。 

 

2.增量运算符(++、--)

自增运算符(++)

+在前,先加后用

+在后,先用后加

为什么不直接使用a++,还要重新定义一个c=10?

因为之前的++a让a变成了11,再用a++,其值会是11,不好具体让我们观察其变性,直接找到一个数更直观。

public class TestOperator {
    public static void main(String[] args) {
        int a = 10;
        System.out.println(a);
        int b = ++a;
        System.out.println("++10="+b);
        int c = 10;
        System.out.println(c);
        int d = c++;
        System.out.println("10++="+d);
    }
}

自减运算符(--)

+在前,先加后用

+在后,先用后加

(这个与++原理是一样的)

 三、关系运算符

关系运算符(==等、!=不等、>、<、>=、<=)一般都在if条件语句中用到

比较结果为Boolean类型的true或false

public class TestOperator {
    public static void main(String[] args) {
        int a = 20;
        int b =39;
        boolean c = (a >= b);
        System.out.println("boolean c="+c);
        if(a == b) {
            System.out.println("a=b");
        }else if (a < b) {
            System.out.println("a<b");
        }else {
            System.out.println("a>b");
        }
    }
}

四、逻辑运算符

 逻辑运算符(&&逻辑与、||逻辑或、!逻辑非)也同样是用于if条件语句中的多一些

 语法规则:表达式1 && 表达式 2(两边的表达式都是Boolean类型的)

1.&&与

&&逻辑与相当于数学中的且(p∧q),就是必须表达式左边为true且右边也为true,整个表达式才为true,若左边已经为false了,无论右边表达式为true或false,整个表达式都为false。

2.||或

||逻辑或也相当于数学中的逻辑或(p∨q),只要是其中一方为true,则整个表达式都为true。

3.!非 

!逻辑非也也相当于数学中的逻辑非(¬p),就是把整个表达式的false变true,ture变false

public class TestOperator {
    public static void main(String[] args) {
        int a = 18;
        int b = 21;
        int c = 18;
        if (a == b && a == c) {
            System.out.println("三个数相等");
        }else if (a == b || a == c || b == c ) {
            System.out.println("三个中有两个相等");
        }else {
            System.out.println("没有相等的");
        }
        if(!(a == b)) {
            System.out.println("a != b");
        }
    }
}

4.短路求值

 &&和||遵循短路求值的规则

像10 / 0 == 0 该会导致程序抛出异常的代码造成代码编译错误

因为0 不能做除数

而&& 和 || 

在这个代码中能够正常的运行

为什么呢?

因为逻辑与&&的表达式1已经是false了为假了,所以已经不符合“且”   p∧q = 1  这个式子了,无论右边是true或false,整个表达式(10 < 2 && 10 / 0 == 0)已经为false了。所以直接就输出false了

而逻辑或|| 的表达式1已经为true了为真了,所以直接不管后面直接输出真true了

这与高中数学学的且与或是一样的

 五、位运算符

位运算符(&与、|或、^亦或、~按位取反、<<左移运算符、>>右移运算符、无符号右移>>>)

Java中数据存储最小的单位是字节Byte,而数据操作最小的单位是比特位bit,字节是最小的存储单位,一个Byte由8个bit构成,多个字节组合在一起就可以表示不同的数据。

位运算符除了~按位取反是一元运算符,其他都是二元运算符。

位操作表示按二进制位计算计算机中都是使用二进制表示数据的(01构成的序列),按位运算就是在按照二进制的每一位进行计算。

1.&与

如果两个数的二进制位都是1,则结果是1,否则结果是0。

  

2.|或

两个数的二进制位中只要有1,结果都是1

3.^异或

两个数的二进制位相同则结果为0,不同为1

4、按位取反~(一元)

该位数为0,则转为1,如果该位为1,则转为0。

注意:

1.Java中的十六进制是以0x或0X开头,后面跟由0到9及A到F(a到f)组成的数字序列,如0x1A表示十六进制1A(是以零x开头不是O),printf能够格式化输出内容%x表示按照十六进制输出

println不适用

2.Java中的二进制是以0b或0B开头,后面跟由0和1组成的数字序列,如0b1010表示二进制1010。

3.Java中的八进制是以0开头,后面跟0到7的数字,如0123表示八进制123。

4.Java中的十进制直接写数字,如123。

六、移位运算符(<<左移、>>右移、>>>无符号右移)

1.<<左移

2.>>右移

3.>>>无符号右移

七、复合赋值算符(+=、*=、/=、%=……)

就是以上讲的与等号一起用,a += b就相当于 a = a + b,更加的便捷一点。

八、条件运算符(表达式?表达式:表达式)

表达式1?表达式2:表达式3

表达式1的值为true,整个表达式的值为表达式2的值

表达式1的值为false,整个表达式的值为表达式3的值

也是Java中唯一的一个三目运算符,是条件判断语句的简写。

注意:

1.表达式2表达式3的结果要是同类型的,除非能够发行隐式类型转换

2.表达式不能单独存在,其产生的结果必须要被使用。

九、输入、输出

1.输出

输出在1.初识Java(Java的定义、结构、注释、标识符、关键字以及数据类型、输出、类型转换、字符串类型)

这一节中有讲到

2.输入

当我们在main方法中定义了个Scanner,创建了对象,代码顶部就会出现相关的Scanner文件,我们按住Ctrl键,鼠标点击Scanner则可以进入。

Ctrl键+fn+F12打开文件结构视图,可以看见Scanner类的结构, 可以快速浏览Scanner的结构

从键盘上输入整型、浮点型、字符串

import java.util.Scanner;
public class ScannerTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入你的总成绩:");
        int grade = scanner.nextInt();
        System.out.println("请输入你的平均成绩:");
        double averageGrade = scanner.nextDouble();
    }
}

用Scanner循环读取N个数字求平均值


import java.util.Scanner;
public class ScannerTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /*使用Scanner循环读取N个数字求平均值*/
        int sum = 0;
        int num = 0;
        System.out.println("请输入数:");
        while (scanner.hasNextInt()) {
            int tmp = scanner.nextInt();
            sum += tmp;
            num ++;
        }
        System.out.println("和为:"+sum);
        System.out.println("平均数为:"+sum/num*1.0);
        scanner.close();
    }
}

注意事项:

当循环输入多个数据的时候,使用Ctrl键+z结束输入(Windows上使用Ctrl键+z,Linux/Mac上使用Ctrl键+d)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值