Java的运算符与逻辑控制

作者:~小明学编程 

文章专栏:JavaSE基础

目之所及皆为回忆,心之所想皆为过往
在这里插入图片描述

由于Java的运算符与C语言的相差不大,在这里主要介绍一下Java运算符的特别之处,就不做详细的介绍了。

目录

运算符

基本四则运算符:加减乘除模(+ - * / %)

增量运算符 += -= *= %=

 自增/自减运算符 ++ --

关系运算符

逻辑运算符

位运算符与移位运算

条件运算符

运算符的优先级

逻辑控制

分支结构

if 语句

switch语句

循环结构

输入输出

输出到控制台


运算符

基本四则运算符:加减乘除模(+ - * / %)

加减乘除在这里就不讲了,和C语言没啥区别,在这里值得我们说的是取余运算%,在JAVA中

我们不仅能对整数进行%运算,还能对浮点型进行%运算。

public class Dome {
    public static void main(String[] args) {
        int x=4;
        int y=3;
        float a=11.5f;
        float b=1.5f;
        System.out.println(a%b);
        System.out.println(x%y);
    }
}

Java的运算符与逻辑控制_第1张图片

增量运算符 += -= *= %=

Java的运算符与逻辑控制_第2张图片

 这里我们会看到有报错,这是因为我们事先对b进行了一个整型提升,b+5的类型成为了int型赋给byte型明显放不下,所以会报错,但是b+=5;则不会报错,这是因为我们的增量运算符给b+5做了一个强制类型转换等同于b=(byte)(b+5);

    public static void main(String[] args) {
        int a=20;
        a+=10;
        byte b=5;
//        b=b+5;错误写法
        b+=5;//等同于b=(byte)(b+5);
        System.out.println(a+" "+b);
    }

Java的运算符与逻辑控制_第3张图片

 自增/自减运算符 ++ --

自增自减运算符与C语言一样详见请看http://t.csdn.cn/S5Ml9

关系运算符

关系运算符主要有六个 : == != < > <= >= ,其计算结果是 true 或者 false

逻辑运算符

逻辑运算符主要有三个 : && || ! ,运算结果都是 boolean 类型。
& | 如果表达式结果为 boolean , 也表示逻辑运算 . 但与 && || 相比 , 它们不支持短路求值 .
也就是在&运算符中如果我们判断了&左边是假,我们不会停止判断会继续判断右边是否为真,当然即使右边为真也不影响我们最后的结果为假。

位运算符与移位运算

http://t.csdn.cn/cZoDV这里是C语言的运算符和JAVA的基本一样,不一样的是移位运算,这里我们主要说一下

无符号右移 >>>: 最右侧位不要了 , 最左侧补 0.
注意 :
1. 左移 1 , 相当于原数字 * 2. 左移 N , 相当于原数字 * 2 N 次方 .
2. 右移 1 , 相当于原数字 / 2. 右移 N , 相当于原数字 / 2 N 次方 .
3. 由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 N 次方的时候可以用移位运算代替 .
4. 移动负数位或者移位位数过大都没有意义 .

条件运算符

条件运算符只有一个 :
表达式 1 ? 表达式 2 : 表达式 3
表达式 1 的值为 true , 整个表达式的值为 表达式 2 的值 ;
表达式 1 的值为 false , 整个表达式的值为 表达式 3 的值 .
也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法

运算符的优先级

运算符之间是有 优先级 . 具体的规则我们 不必记忆 . 在可能存在歧义的代码中加上括号即可

逻辑控制

分支结构

if 语句

if(布尔表达式){

 // 语句 

}

这里我们需要强调的是if后面的括号里面必须是布尔表达式,这与C语言是不同的,不能将一个整型变量放到里面进行判断。

switch语句

这里我们重点讲解一下Java的switch语句

1.多个case后的常量值不可以重复
2.switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型

循环结构

循环结构与C语言唯一出入还是括号内必须放布尔表达式,主要是多多练习

输入输出

输出到控制台

基本语法
 
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
int x = 10;
System.out.printf("x = %d\n", x);


Java的运算符与逻辑控制_第4张图片

 

从键盘输入
使用 Scanner 读取字符串 / 整数 / 浮点数
    import java.util.Scanner; // 需要导入 util 包
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入你的姓名:");
    String name = sc.nextLine();
    System.out.println("请输入你的年龄:");
    int age = sc.nextInt();
    System.out.println("请输入你的工资:");
    flfloat salary = sc.nextFloat();
    System.out.println("你的信息如下:");
    System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
    sc.close(); // 注意, 要记得调用关闭方法

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a= scanner.nextInt();
        String str = scanner.nextLine();
        System.out.println(str);
        System.out.println(a);
        if (a%2==0)
            System.out.println("偶数");
        else
            System.out.println("奇数");

    }

Java的运算符与逻辑控制_第5张图片

 我们可以看到我们还没有输入字符程序就直接进行下去把我们的数字给打印下来了,这是BUG当我们的数字输入在字符串前面的时候程序会直接向下运行,不给我们接受字符串的机会,要想接受字符串只有将str的接受放在a 的前面才行。

你可能感兴趣的:(JavaSE基础,java,jvm,开发语言)