运算符

来源:互联网 发布:centos 6.5 mirror 编辑:程序博客网 时间:2024/06/06 18:58

㈠ ++和--

   前++(--):先加减后使用

   后++(--):先使用后加减

 

例:

    a = 1;

    //a++: 后++, 先取a值,然后增加 

    b = (a++);//两个运算, 现在执行++ 运算, 然后执行赋值=运算

              //执行顺序参考: b = (a++) 

              // ++运算  1) 先取"a"的值1 作为"a++表达式"的值1

              // ++运算  2) 然后将a的值增加1, a为2

              // = 运算  3) 将"a++ 表达式"的值1 赋值给 b为1

    System.out.println(a+","+b); //2,1

-------------------------------------------------------------

    a = 1;

    a = a++;//两个运算, 现在执行++ 运算, 然后执行赋值=运算

            // ++运算  1) 先取a的值1 作为"a++表达式"的值1

            // ++运算  2) 然后将a的值增加1, a为2

            // = 运算  3) 将"a++ 表达式"的值1 赋值给 a为1

    System.out.println(a);//1

-------------------------------------------------------------

                int a = 1;

                int b;

                b = ++a;//先++: 先增加,再使用

                //运算顺序: 先++执行结束, 再赋值=

                // ++ 运算 1) 先将a的值增加1, a为2

                // ++ 运算 2) 再取a的值2作为 "++a 表达式"的值2

                // =  运算 3) 将 "++a 表达式"的值2 赋值给b 为 2

                System.out.println(a+","+b);//2,2

 

㈡ 赋值运算符

   =  += -= *=  /=   %= ............

例:

    sum+=2

    相当于sum=sum+2

 

㈢ 取余运算 "%"

/**

 * 取余运算, 取模运算

 *  获取除法结果中的余数

 *  1) 负数取余的结果: 负数和0,工作很少使用,考试可能有!

 *  2) 正数方向,n的余数是周期函数,并且小于n

 *     在工作中, 周期性的运算经常采用 % 实现

 */

public class Demo02 {

  public static void main(String[] args) {

    int n = 5;

    int m = n % 3;// 5/3 得 1 余 2

    System.out.println(m);// 2

    

    System.out.println(-4%3);//得 -1 余 -1

    System.out.println(-3%3);//得 -1 余 0

    System.out.println(-2%3);//得 0 余 -2

    System.out.println(-1%3);//得 0 余 -1

    System.out.println(0%3);//得 0 余 0

    System.out.println(1%3);//得 0 余 1

    System.out.println(2%3);//得 0 余 2

    System.out.println(3%3);//得 1 余 0

    System.out.println(4%3);//得 1 余 1

    System.out.println(5%3);//得 1 余 2

    System.out.println(6%3);//得 0 余 0

  }

}

 

㈣ 逻辑运算

逻辑运算 : &&与 并且   ||或 或者   !非 否则 

 

&& 是短路逻辑运算当第一个表达式是false时候,就直接得结果

& 非短路逻辑运算

建议:工作中大多使用 && 实现短路逻辑

 

㈤ 字符串连接运算 +  

Java 中唯一"重载"的运算符是“+”:同名,但实际是两种功能

+ 两端数值,就进行 加法运算 

+ 两端是字符串,就进行 字符串连接

 

㈥ 三目运算  布尔表达式 ? 表达式1 : 表达式2

/**

 * 计算3个数字中的最大值 

 */

public class Demo13 {

        public static void main(String[] args) {

                Scanner in = new Scanner(System.in); // 控制台输入

                int a,b,c;

                System.out.print("输入a b c(空格分隔):");

                //12 348 230

                a = in.nextInt();//12

                b = in.nextInt();//348

                c = in.nextInt();//230

                int max = a>b ? a : b;//348

                max = max > c ? max : c;//348

                System.out.println("最大值:"+max);//348

        }

}

 

㈦ 比较运算符

 比较运算符: >, <,  >=,  <=, ==, !=  

 

㈧ 移位运算符

<<        左移位运算符

i=value<<num

将 value(的二进制补码) 向 左 移动 num 位

规则:丢弃最高位,0补最低位(高位溢出,低位补0)【数的正负符号会发生变化】

数学意义:在数字没有溢出的情况下,左移n位都相当于乘以 基数 的 n 次方

 

>>        右移位运算符     算数右移

i=value>>num

将 value 向 右 移动 num 位

规则:符号位不变,左边不上符号位(低位溢出,高位补符号位)

数学意义:数字右移 n 位,相当于 除以 基数 的 n 次方

 

>>>                无符号右移       逻辑右移

i=value>>>num

将 value 向 右 移动 num 位

规则:忽略了符号位扩展,0补最高位!

 

/**

 * 移位运算常见面试题

 */

public class Demo05 {

        public static void main(String[] args) {

                // 最快速的实现 n * 8(2 的 n次幂)

                int n = 5;//    00000000 00000000 00000000 00000101

                int a = n<<3;// 00000 00000000 00000000 00000101 000

                System.out.println(a);//40

                //最快速的实现 n / 8(2 的 n次幂)

        }

}

0 0
原创粉丝点击