A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 814326663 中级黑马   /  2015-4-16 20:42  /  589 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**--------文件名:Operator.java-------------*/
// author : 814326663 孤狼
class Operator {
        /**
         * 计算运算符: +; -; *; /;
         */
        private void computeOperator() {
                int a = 8;
                int b = 5;
                // 对于除法运算,根据基本类型的自动转换规则,当除数和被除数都是整数时,
// 得到的结果也是整数。因此 8/5得到的是1,而不是1.6
                int f = a / b;
                double g = a / b;
                System.out.println("(f = a / b) = " + f + "; (g = a / b) = " + g);
                // 只要除数和被除数中有一个为double或者float,结果就不同了,8/5.0得到是1.6
                double h = a / (b * 1.0d);
                float i = a / (b * 1.0f);
                System.out.println("(h = a / (b * 1.0d)) = " + h + "; (i = a / (b * 1.0f)) = " + i);
        }

        /**
         * 比较运算符: ==; <; >; !=; <=; >=;
         */
        private void compareOperator() {
                int a = 5;
                int b = 10;
                System.out.println("(a == b) = " + (a == b));
                System.out.println("(a < b) = " + (a < b));
                System.out.println("(a > b) = " + (a > b));
                System.out.println("(a != b) = " + (a != b));
                System.out.println("(a <= b) = " + (a <= b));
                System.out.println("(a >= b) = " + (a >= b));
                System.out.println("(a = b) = " + (a = b)); // 10
        }

        /**
         * 位运算符: &; |; ^; ~; >>; >>>; <<;
         */
        private void bitOperator() {
                byte a = 23; // "00010111"
                byte b = 26; // "00011010"

                // 按位与, 两个运算数都为1时,结果为1,其余结果为0
                int c = a & b; // "00010010"
                System.out.println("(c = a & b) = " + c);
                // 按位或,两个运算数都为0时,结果为0,其余结果为1
                int d = a | b; // "00011111" 1
                System.out.println("(d = a | b) = " + d);
                // 按位异或,两个运算数相同时结果为0,不同时结果为1
                int e = a ^ b; // "00001101"
                System.out.println("(e = a ^ b) = " + e);
                // 按位非,0变成1,1变成0
                int f = ~a; // "11101000"
                // 注意,Java中采用二进制补码存储数字,对于整数,原码与补码一致,
                // 对于负数,符号位不变,将原码取反然后加1,得到补码,
        // 补码"11101000"对应的原码是"10011000"即-24
                System.out.println("(f = ~a) = " + f);
                // 右移,左边空出位以符号位填充
                int g = a >> 1;// "00001011" = 11
                System.out.println("(g = a >> 1) = " + g);
                // 右移,左边空出位以0填充
                int h = a >>> 1;// "00001011" = 11
                System.out.println("(h = a >>> 1)" + h);
                // 对负数操作时,>>和>>>得到结果会不一样
                System.out.println("(-24 >> 1) = " + (-24 >> 1) + "\t (-24 >>> 1) = " + (-24 >>> 1));
                // 左移
                int i = a << 1; // "00101110" = 46
                System.out.println("(a << 1) = " + i);
        }

        /**
         * 布尔运算符: &&; ||; !; &; |; ^;
         */
        private void booleanOperator() {
                boolean b1 = true;
                boolean b2 = true;
                boolean b3 = false;

                // &&运算符:对操作数进行与运算,当所有操作数都为true时,结果为true,
        // 否则结果为false。
                if (b1 && b2 && b3) {
                        System.out.println("变量b1, b2, b3的值都为true");
                } else {
                        System.out.println("变量b1, b2, b3中至少有一个的值为false");
                }
                // 注意&&是短路与,意思是:当对操作数的表达式进行从左到右运算时,
        // 若遇到有操作数的值为false,则结束运算,将结果置为false。
                int i = 2;
                int j = 0;
                if (b3 && ((j = i) == 2)) {
                }
                System.out.println("j = " + j);
                if (b1 && ((j = i) == 2)) {
                }
                System.out.println("j = " + j);

                // ||运算符:对操作数进行或运算,当所有操作数都为false时,结果为false,
        // 否则结果为true。
                if (b1 || b2 || b3) {
                        System.out.println("变量b1, b2, b3中至少有一个的值为true");
                } else {
                        System.out.println("变量b1, b2, b3的值都为false");
                }
                // 同样,||是短路或,意思是:当对操作数的表达式进行从左到右运算时,
        // 若遇到有操作数的值为true,就结束运算,将结果置为true。
                if (b1 || ((j = j - 1) == 1)) {
                }
                System.out.println("j = " + j);
                if (b3 || ((j = j - 1) == 1)) {
                }
                System.out.println("j = " + j);

                // !运算符:对操作数的值进行取反运算,操作数为true,取反为false。
                if (!b1) {
                        System.out.println("变量b1 为 false,因为b1取反后的值为true");
                } else {
                        System.out.println("变量b1 为 true,因为b1取反后的值为false");
                }

                // &运算符,和&&一样,对操作数做与操作,不同的是它不是短路的,
        // 它会运算完所有的操作数表达式
                if (b3 & ((j = i) == 2)) {
                        System.out.println("b3 & ((j=i) == 2): true");
                } else {
                        System.out.println("b3 & ((j=i) == 2): false");
                }
                System.out.println("j = " + j);
                if (b1 & ((j = j - 1) == 0)) {
                }
                System.out.println("j = " + j);

                // |运算符,和||一样,对操作数进行或操作,但它不是短路的。
                if (b1 | ((j = i) == 2)) {
                        System.out.println("b1 | ((j=i) == 2): true");
                } else {
                        System.out.println("b1 | ((j=i) == 2): false");
                }
                System.out.println("j = " + j);
                if (b3 | ((j = j - 1) == 1)) {
                }
                System.out.println("j = " + j);

                // ^运算符,对操作数做异或操作,相同为false,不同为true
                if (b1 ^ b2) {
                        System.out.println("变量b1,b2的值不同!");
                } else {
                        System.out.println("变量b1,b2的值一样!");
                }
        }

        /**
         * 赋值运算符: =; +=; -=; *=; /=; &=; |=; ^=;
         */
        private void evaluateOperator() {
                // =是最常用的赋值运算符
                int i = 5; // 将变量i的值赋为5
                // +=运算符是先将运算符左边的操作符的值加上右边的操作数的值,
        // 将结果再赋值给运算符左边的操作符
                i += 3; // 等价于 i = i + 3;
                i -= 3; // 等价于i = i - 3;
                i *= 3; // 等价于i = i * 3;
                i /= 3; // 等价于i = i / 3;
                i &= 3; // 等价于i = i & 3
                System.out.println("(i &= 3) = " + i);
                i |= 3; // 等价于i = i | 3
                System.out.println("(i |= 3) = " + i);
                i ^= 3; // 等价于i = i ^ 3
                System.out.println("(i ^= 3) = " + i);
        }

        /**
         * 其他运算符: 三元运算符; ++; --; -;
         */
        private void otherOperator() {
                int i = 5;
                // ++是将操作数加1
                // ++i表示先将i加1后再进行运算
                if (i++ == 5) {
                        System.out.println("表达式(i++ == 5)的值为true");
                } else {
                        System.out.println("表达式(i++ == 5)的值为false");
                }
                System.out.println("i = " + i);
                // i++表示先进行运算,再将i的值加1
                i = 5;
                if (++i == 5) {
                        System.out.println("表达式(++i == 5)的值为true");
                } else {
                        System.out.println("表达式(++i == 5)的值为false");
                }
                System.out.println("i = " + i);
                // --将操作数减1,同样,--i是先将i减1,再进行运算;i++是先进行运算,再将i减1
                i--;
                --i;

                // 可以用三目运算符替代简单的if语句
                // 格式是: x = a ? b : c;如果a的值为true,则将b的值赋予x,否则将c的值赋予x。
                int x = (i >= 0) ? i : -i; // 将一个减号-和数字连用,是取数字的负数
                System.out.println("i的绝对值为: " + x);
        }

        public static void main(String[] args) {
                Operator test = new Operator();
                System.out.println("计算运算符方法的输出:");
                test.computeOperator();
                System.out.println("比较运算符方法的输出:");
                test.compareOperator();
                System.out.println("位运算符方法的输出:");
                test.bitOperator();
                System.out.println("布尔运算符方法的输出:");
                test.booleanOperator();
                System.out.println("赋值运算符方法的输出:");
                test.evaluateOperator();
                System.out.println("其他运算符方法的输出:");
                test.otherOperator();
        }
}


1 个回复

倒序浏览
效果图如下:  
由于不会代码复制  所以只能这样了:

效果图1.jpg (99.73 KB, 下载次数: 26)

效果图1

效果图1

效果图2.jpg (88.01 KB, 下载次数: 19)

效果图2

效果图2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马