第1章  运算符

1.1  算数运算符

       运算符

对常量和变量进行操作的符号称为运算符

       表达式

用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。

定义两个int类型的变量a,b,做加法(a +b)

       常用运算符

算术运算符

赋值运算符

关系运算符

逻辑运算符

三元运算符

 

1.1.1算数运算符的基本用法

1.1.2算数运算符概述

 A:什么是运算符

        就是对常量和变量进行操作的符号。

B:算数运算符有哪些

       *+,-,*,/,%,++,-- 

1.1.3代码案例三

package com.itheima_01;
/*
 * 运算符:对常量和变量进行操作的符号
 * 表达式:用运算符连接起来的符合java语法的式子。不同类型的运算符连接起来的式子是不同的表达式。
 *      举例:定义两个int类型的变量a,b,
 *          a+ b
 * 
 * 运算符分类:
 *      算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符。
 * 
 * 算术运算符:
 *      +,-,*,/的基本使用
 */
public class OperatorDemo {
    public staticvoid main(String[] args) {
        // 定义两个变量
        int a = 3;
        int b = 4;
 
        System.out.println(a+ b);
        System.out.println(a- b);
        System.out.println(a* b);
        System.out.println(a/ b);
 
        // 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
        System.out.println(3 / 4.0);
        System.out.println(3.0 / 4);
    }
}

 

1.1.4算数运算符取余和除法的区别

 %:取余运算符。得到的是两个相除数据的余数。

 /:除法运算符。得到是两个相除数据的商。

 使用场景: %:判断两个数据是否整除。

1.1.5代码案例四

public class OperatorDemo2 {
    public staticvoid main(String[] args) {
        int a = 5;
        int b = 3;
 
        System.out.println(a/ b);
        System.out.println(a% b);
    }
}

 

1.1.6字符和字符串参与加法操作

字符参与运算

其实是拿该字符对应的数值来操作

‘a’     97

‘A’     65

‘0’     48

字符串参与运算

这里其实做的不是加法运算,而是字符串拼接。

字符串和其他类型的数据做拼接,结果是字符串类型的。

1.1.7代码案例五

package com.itheima_01;
/*
 * 整数的加法。
 * 字符参与加法操作。拿字符在计算机中底层存储对应的数据值来参与运算的。
 *      '0'     48
 *      'a'     97
 *      'A'     65
 * 字符串参与加法操作。
 *      这里的+其实不是加法,而是字符串连接符。
 */
public class OperatorDemo3 {
    public staticvoid main(String[] args) {
        // 整数加法
        int a = 10;
        int b = 20;
        System.out.println(a+ b);
        System.out.println("------------------");
 
        // 字符参与加法操作
        char c = '0';
        char c2 = 'a';
        System.out.println(a + c);
        System.out.println(a+ c2);
        System.out.println("------------------");
 
        // 字符串参与加法操作
        System.out.println("hello"+ a);
        System.out.println("hello"+ a + b);// "hello"+10,然后再和b进行拼接
        System.out.println(a+ b + "hello");
    }
}

1.1.8算数运算符++和- - 的用法

++,--运算符:对变量做加1或者减1的操作。

++或者--既可以放在变量的后面,也可以放在变量的前面。

单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的。

参与操作的时候:

             如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--

              如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作

1.1.9代码案例六

public class OperatorDemo4 {
    public staticvoid main(String[] args) {
        int a = 10;
        System.out.println("a:"+ a);
 
        // 单独使用
        // a++;
        // ++a;
        // System.out.println("a:" + a);
 
        // 参与操作使用
        // int b = a++;
        int b = ++a;
        System.out.println("a:"+ a);
        System.out.println("b:"+ b);
    }
}

 

1.2  赋值运算符

1.2.1赋值运算符分类

基本的赋值运算符:=

扩展的赋值运算符:+=,-=,*=,/=,%=

+=: a+=20;相当于a = (a的数据类型)(a + 20);

1.2.2代码案例七

package com.itheima_02;
/*
 * 赋值运算符:
 *      A:基本   =
 *      B:扩展   +=,-=,*=,...
 * 
 * +=:
 *      a+=20;
 *      相当于
 *      a= (a的数据类型)(a + 20);
 */
public class OperatorDemo {
    public staticvoid main(String[] args) {
        // 把10赋值给int类型的变量a
        int a = 10;
 
        // += 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
        a += 10;// 相当于a= a + 10
        System.out.println("a:"+ a);
        System.out.println("----------------------");
 
        short s =10;
        // s += 20; // 相当于 s = s + 20;
        s = (short)(s + 20);
        System.out.println("s:"+ s);
    }
}

 

1.3  关系运算符

1.3.1    基本使用及注意事项

关系运算符包含以下内容:

==,!=,>,>=,<,<=

关系运算符的结果都是boolean型,也就是要么是true,要么是false。

注意事项:

关系运算符“==”不能误写成“=”

1.3.2    代码案例八

package com.itheima_03;
 
/*
 * 关系运算符:
 *      ==,!=,>,>=,<,<=
 *      关系运算符的结果是boolean类型。
 * 
 * 注意:
 *      千万不要把==写成=
 */
public class OperatorDemo {
    public staticvoid main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
 
        System.out.println(a== b);
        System.out.println(a== c);
        System.out.println("-----------------");
        System.out.println(a!= b);
        System.out.println(a!= c);
        System.out.println("-----------------");
        System.out.println(a> b);
        System.out.println(a> c);
        System.out.println("-----------------");
        System.out.println(a>= b);
        System.out.println(a>= c);
        System.out.println("-----------------");
 
        int x = 3;
        int y = 4;
        // System.out.println(x == y);
        // System.out.println(x = y);// 把y赋值给x,把x的值输出
        boolean bb= (x == y);
        // 报错
        // boolean cc = (x = y);
        int cc = (x = y);
    }
}

 

1.4  逻辑运算符

1.4.1    逻辑运算符概述

A:逻辑运算符有哪些

       &,|,^,!

       &&,||

 B:案例演示

 逻辑运算符的基本用法

      

 C:注意事项:

       a:逻辑运算符一般用于连接boolean类型的表达式或者值。

       b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。

             算术表达式:a + b

              比较表达式:a == b(条件表达式)

 D:结论:

      &逻辑与:有false则false。

      |逻辑或:有true则true。

      ^逻辑异或:相同为false,不同为true。

      !逻辑非:非false则true,非true则false。

       特点:偶数个不改变本身。

1.4.2    代码案例九

package com.itheima_04;
/*
 * 逻辑运算符:用于连接关系表达式。
 * &,|,^,!
 * &&,||
 * 
 * 与:& 有false则false
 * 或:| 有true则true
 * 异或:^ 相同则false,不同则true。(男女朋友)
 * 非:! true则false,false则true
 */
public class OperatorDemo {
    public staticvoid main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
 
        System.out.println((a> b) & (a> c));//false & false
        System.out.println((a< b) & (a> c)); //true & false
        System.out.println((a> b) & (a< c)); //false & true
        System.out.println((a< b) & (a< c)); //true & true
        System.out.println("---------------");
        System.out.println((a> b) | (a> c));//false | false
        System.out.println((a< b) | (a> c)); //true | false
        System.out.println((a> b) | (a< c)); //false | true
        System.out.println((a< b) | (a< c)); //true | true
        System.out.println("---------------");
        System.out.println((a> b) ^ (a> c));//false ^ false
        System.out.println((a< b) ^ (a> c)); //true ^ false
        System.out.println((a> b) ^ (a< c)); //false ^ true
        System.out.println((a< b) ^ (a< c)); //true ^ true
        System.out.println("---------------");
        System.out.println((a> b)); //false
        System.out.println(!(a> b)); //!false
        System.out.println(!!(a> b)); //!!false
    }
}

1.4.3    逻辑运算符&&&的区别

A:&&和&的区别?

       a:最终结果一样。

       b:&&具有短路效果。左边是false,右边不执行。

       &是无论左边是false还是true,右边都会执行

B:||和|的区别?

       a:最终结果一样

       b:||具有短路效果.左边是true,右边不执行

       |是无论左边是false还是true,右边都会执行

1.4.4    代码案例十:

package com.itheima_04;
 
/*
 * &&和&的结果一样
 * ||和|的结果一样
 * 
 * &&和&的区别:
 *      &&如果左边是false,右边不执行。
 *      &无论左边是true还是false,右边都会执行。
 */
public class OperatorDemo2 {
    public staticvoid main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
 
        System.out.println((a> b) && (a> c));//false && false
        System.out.println((a< b) && (a> c)); //true && false
        System.out.println((a> b) && (a< c)); //false && true
        System.out.println((a< b) && (a< c)); //true && true
        System.out.println("---------------");
        System.out.println((a> b) || (a> c));//false || false
        System.out.println((a< b) || (a> c)); //true || false
        System.out.println((a> b) || (a< c)); //false || true
        System.out.println((a< b) || (a< c)); //true || true
        System.out.println("---------------");
 
        int x = 3;
        int y = 4;
        // System.out.println((x++ > 4) & (y++ > 5));// false & false
        System.out.println((x++> 4) && (y++ > 5)); // false && false
        System.out.println("x:"+ x);
        System.out.println("y:"+ y);
    }
}

1.5  三元运算符

1.5.1三元运算符概述

A:格式

       (关系表达式)?表达式1:表达式2;

       如果条件为true,运算后的结果是表达式1;

       如果条件为false,运算后的结果是表达式2;

B:示例:

       获取两个数中大数。

       int x=3,y=4,z;

       z = (x>y)?x:y;//z变量存储的就是两个数的大数

1.5.2代码案例十一

package com.itheima_05;
/*
 * 三元运算符:
 * 
 * 格式:
 *      (关系表达式)?表达式1:表达式2;
 * 执行流程:
 *      A:计算关系表达式的值,看是true还是false
 *      B:如果是true,表达式1就是运算结果
 *            如果是false,表达式2就是运算结果
 */
public class OperatorDemo {
    public staticvoid main(String[] args) {
        int a = 10;
        int b = 20;
 
        int c = (a > b) ? a : b;
        System.out.println("c:"+ c);
    }
}

 

1.5.3代码案例十二(比较两个数是否相同)

package com.itheima_05;
 
/*  
 * 三元运算符的练习
 * 比较两个整数是否相同
 */
public class OperatorTest {
    public staticvoid main(String[] args) {
        // 定义两个int类型的变量
        int a = 10;
        int b = 20;
 
        boolean flag= (a== b) ? true: false;
        // boolean flag = (a == b);
        System.out.println(flag);
    }
}

 

1.5.4代码案例十三(获取三个数中的最大值)

package com.itheima_05;
/*
 * 获取三个整数中的最大值
 */
public class OperatorTest2 {
    public staticvoid main(String[] args) {
        // 定义三个int类型的变量
        int a = 10;
        int b = 30;
        int c = 20;
 
        // 先比较两个整数的大值
        int temp =((a > b)? a : b);
        int max =((temp > c)? temp : c);
        System.out.println("max:"+ max);
    }
}