操作符

操作符

1. Java的算数操作符

算数操作符: + - * / % ++ --

基本算数操作符

public class HelloWorld{
    public static void main(String[] args){
        int i = 10;
        int j = 5;
        int a = i + j;
        int b =i - j;
        int c = i * j;
        int d = i % j;
    }
}

练习-求和 (使用scanner从控制台获取数字)

import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        System.out.println("第一个整数:"+a);
        int b = s.nextInt();
        System.out.println("第二个整数:"+b);
        int c = a + b;
        System.out.println("两个数的和:" + c);
    }
}

任意运算单元的长度超过int

如果有任何运算单元的长度超过int,那么运算结果就按照最长的长度计算

比如:

public class HelloWorld {
    public static void main(String[] args) {

        int a = 5;
        long b = 6;
        int c = (int) (a+b); //a+b的运算结果是long型,所以要进行强制转换
        long d = a+b;

    }
}

任意运算单元的长度小于int

如果任何运算单元的长度都不超过int,那么运算结果就按照int来计算

比如:

public class HelloWorld {
    public static void main(String[] args) {
        byte a = 1;
        byte b= 2;
        byte c = (byte) (a+b); //虽然a b都是byte类型,但是运算结果是int类型,需要进行强制转换
        int d = a+b;
    }
}

%取模

public class HelloWorld{
    public static void main(String[] args){
        int i = 5;
        int j = 2;
        System.out.println(i%j); //输出 1
    }
}

自增 自减

public class HelloWorld{
    public static void main(String[] args){

        int i = 5;
        i++;
        System.out.println(i); // 输出 6
    }
}

自增 自减置前和之后的区别

i++; // 先取值,再运算
++i; // 先运算,再取值
public class HelloWorld{
    public static void main(String[] args){
        int i = 5;
        System.out.println(i++); //输出5
        System.out.println(i); //输出6

        int j = 5;
        System.out.println(++j); //输出6
        System.out.println(j); //输出6
    }
}

练习题1

int i = 1;
int j = ++i + i++ + ++i + ++i + i++;
//i值    2    3      4      5     6
//表达式  2    2      4      5     5
//最终是18

练习题2

使用scanner收集身高体重,并且计算BMI值

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        float heigh = s.nextFloat();
        System.out.println("身高:"+heigh);
        float weight = s.nextFloat();
        System.out.println("体重:"+weight);
        float bmi = weight / (heigh * heigh);
        System.out.println(bmi);
    }
}

2.Java的关系操作符

关系操作符:比较两个变量之间的关系

大于 >

大于等于 >=

小于 <

小于等于 <=

是否相等 ==

是否不等 !=

public class HelloWorld{
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int c = 5;

        System.out.println(a>b);
        System.out.println(a>=c);
        System.out.println(a==b);
        System.out.println(a!=b);

    }

}

3. Java的逻辑运算符

长路与&和短路与&&

区别:

长路与的两侧都会被运算

短路与只要第一个是false,第二个就不进行运算了

public class HelloWorld {
    public static void main(String[] args) {
        //长路与  无论第一个表达式的值是true或者false,第二个的值,都会被运算
        int i = 2;
        System.out.println( i== 1 & i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
        System.out.println(i);

        //短路与 只要第一个表达式的值是false的,第二个表达式的值,就不需要进行运算了
        int j = 2;
        System.out.println( j== 1 && j++ ==2  );  //因为j==1返回false,所以右边的j++就没有执行了,所以j的值,还是2
        System.out.println(j);     

    }
}

长路或 | 和短路或 ||

区别:

长路或两侧都会被运算

短路或只要第一个是true,第二个就不进行运算了

public class HelloWorld {
    public static void main(String[] args) {
        //长路或  无论第一个表达式的值是true或者false,第二个的值,都会被运算
        int i = 2;
        System.out.println( i== 1 | i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
        System.out.println(i);

        //短路或 只要第一个表达式的值是true的,第二个表达式的值,就不需要进行运算了
        int j = 2;
        System.out.println( j== 2 || j++ ==2  );  //因为j==2返回true,所以右边的j++就没有执行了,所以j的值,还是2
        System.out.println(j);     

    }
}

取反 !

真变假,假变真

public class HelloWorld {
    public static void main(String[] args) {
        boolean b = true;

        System.out.println(b); //输出true
        System.out.println(!b);//输出false

    }
}

异或 ^

不同,返回真

相同,返回假

public class HelloWorld {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println(a^b); //不同返回真
        System.out.println(a^!b); //相同返回假

    }
}

小练习

int i = 1;
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
System.out.println(b);
System.out.println(i);

public class HelloWorld {
    public static void main(String[] args) {
        int i = 1;
        boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
        //i值            2           3
        //表达式           false       true
        //              true    ^   true
        //                      false  

        System.out.println(b);
        System.out.println(i);
    }
}

// false
// 3

4. Java的位操作符

跳过

5. Java的赋值操作符

赋值操作

赋值操作的顺序是从右往左

int i = 5 + 5;

首先计算5+5,得到10,赋值给i

public class HelloWorld {
    public static void main(String[] args) {
        int i = 5+5;
    }
}

对本身进行运算并赋值

+=自加

i+=2 等同于 i = i + 2

其他的-= *= /= %= &= |= ^= >>= >>>=都是类似

public class HelloWorld {
    public static void main(String[] args) {
        int i =3;
        i+=2;
        System.out.println(i);

        int j=3;
        j=j+2;
        System.out.println(j);     

    }
}

小练习

public class HelloWorld {
    public static void main(String[] args) {
        int i = 1;
        i+=++i;
        System.out.println(i);

    }
}
//结果为3

6. Java的三元操作符

格式: 表达式? 值1:值2

如果真的,返回值1,如果假的,返回值2

public class HelloWorld {
    public static void main(String[] args) {

        int i = 5;
        int j = 6;
        int k = i < j ? 99 : 88;
        // 相当于
        if (i < j) {
            k = 99;
        } else {
            k = 88;
        }
        System.out.println(k);

    }
}

7. 使用Scanner读取数据

使用Scanner读取整数

使用Scanner类,需要在最前面加上

import java.unit.Scanner
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        System.out.println("第一个整数:"+a);
        int b = s.nextInt();
        System.out.println("第二个整数:"+b);
    }
}

使用Scanner读取浮点数

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        float a = s.nextFloat();
        System.out.println("读取的浮点数的值是:"+a);

    }
}

使用Scanner读取字符串

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}

读取了整数后,接着读取字符串

需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".

所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println("读取的整数是"+ i);
        String rn = s.nextLine();
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}
暂无评论

发送评论 编辑评论


				
上一篇
下一篇