博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】Java学习笔记004 - 运算符
阅读量:6517 次
发布时间:2019-06-24

本文共 16056 字,大约阅读时间需要 53 分钟。

1 package cn.temptation; 2  3 public class Sample01 { 4     public static void main(String[] args) { 5         // 运算符:对常量 或是 变量进行操作的符号 6         // 分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符 7          8         // 1、算术运算符:+、-、*、/、%、++、-- 9         int i = 7;10         int j = 2;11         12         System.out.println(i + j);        // 913         System.out.println(i - j);        // 514         System.out.println(i * j);        // 1415         // int类型的变量 和 int类型的变量做除法,得到的结果是int类型16         System.out.println(i / j);        // 317         18         // 要求:就想得到3.5的结果,怎么办?19         // 下面的写法不会得到3.5的结果,只会得到3.0的结果,因为只是声明了一个double类型的变量来接收int类型变量和int类型变量相除的结果20         // 对于相除的结果没有内容上的影响21         double result = i / j;22         System.out.println(result);                // 3.023         System.out.println((double)(i / j));    // 3.024         25         // 做一个尝试:使用double类型的字面量常量 和 int类型的字面量常量做除法,会得到double类型的字面量常量26         //                 即int类型的字面量常量在做除法时进行了类型提升27         System.out.println(7.0 / 2);            // 3.528         29         // 类型的提升:把int类型的变量先和double类型的字面量常量1.0做乘法,让结果为double类型,再除以int类型的变量,得到的是double类型的结果30         System.out.println(i * 1.0 / j);        // 3.531         32         System.out.println(i % j);                // 133     }34 }
1 package cn.temptation; 2  3 public class Sample02 { 4     public static void main(String[] args) { 5         // 减号 - 还可以做负号 6         byte i = 1; 7         // Type mismatch: cannot convert from int to byte 8         // byte j = -i; 9         byte j = (byte) -i;10         System.out.println(i);11         System.out.println(j);12         13         byte x = -128;14         byte y = (byte) -x;15         System.out.println(x);        //    -12816         System.out.println(y);        //  -12817         18         /*19          * x:        -128(没有超出byte范围)20          * -x:        128(int类型):0000 0000 0000 0000 0000 0000 1000 000021          * 因为强制类型转换为byte类型的变量y,所以要做截取22          * 23          * 补码:    1000 0000        符号位的1表明是负数24          * 反码:    1111 111125          * 原码:    1000 000026          */27         28         // 产生异常:java.lang.ArithmeticException: / by zero29 //        int k = 123 / 0;30 //        System.out.println(k);31         32         // 产生异常:java.lang.ArithmeticException: / by zero33 //        int k = 0 / 0;34 //        System.out.println(k);35         36 //        double k = 123.45 / 2;37 //        System.out.println(k);        // 61.72538 //        39 //        double m = 123.45 / 0;40 //        System.out.println(m);        // Infinity(正无穷大)41 //        42 //        double n = -123.45 / 0;43 //        System.out.println(n);        // -Infinity(负无穷大)44 //        45 //        double result1 = 0.0 / 0;46 //        System.out.println(result1);        // NaN(Not a Number  不是一个数)47 //        48 //        double result2 = -0.0 / 0;49 //        System.out.println(result2);        // NaN(Not a Number  不是一个数)50         51 //        float k = 123.45F / 2;52 //        System.out.println(k);        // 61.72553 //        54 //        float m = 123.45F / 0;55 //        System.out.println(m);        // Infinity(正无穷大)56 //        57 //        float n = -123.45F / 0;58 //        System.out.println(n);        // -Infinity(负无穷大)59 //        60 //        float result1 = 0.0F / 0;61 //        System.out.println(result1);        // NaN(Not a Number  不是一个数)62 //        63 //        float result2 = -0.0F / 0;64 //        System.out.println(result2);        // NaN(Not a Number  不是一个数)65         66         int result1 = 11 % 4;67         System.out.println(result1);        // 368         69         double result2 = 11.0 % 3;70         System.out.println(result2);        // 2.071         72         double result3 = 11.0 % 3.5;73         System.out.println(result3);        // 0.574         75         // 产生异常:java.lang.ArithmeticException: / by zero76 //        int result4 = 11 % 0;77 //        System.out.println(result4);78         79         double result5 = 11.0 % 0;80         System.out.println(result5);        // NaN(Not a Number  不是一个数)81     }82 }
1 package cn.temptation; 2  3 public class Sample03 { 4     public static void main(String[] args) { 5         // ++ 自增运算符                  -- 自减运算符 6         int i = 2; 7         System.out.println(i);        // 2 8          9         // 1、单独使用自增运算符:不论++放在需要自增的变量的后面还是前面,都会在操作后让变量的值自增110         // 自增运算符放在需要自增的变量的后面11         // i++;12         // 自增运算符放在需要自增的变量的前面13 //        ++i;14         15 //        System.out.println(i);        // 316         17         // 2、非单独使用自增运算符18         // 下句语句一上来先把i的值赋值给j,然后i自己做自增(先赋值再自增)19 //        int j = i++;        // j = 2, i = 320         // 下句语句一上来先i自己做自增,然后把i的值(自增后的值)赋值给j(先自增再赋值)21         int j = ++i;        // j = 3, i = 322         23         System.out.println("j的值为:" + j);24         System.out.println("i的值为:" + i);25     }26 }
1 package cn.temptation; 2  3 public class Sample04 { 4     public static void main(String[] args) { 5         // 关于自增的一道题 6         int i = 2; 7         int j = 3; 8          9         j = i++;10         11         System.out.println("i的值为:" + i);    // 312         System.out.println("j的值为:" + j); // 213         14 //        j = i++ + ++i+i*4;15         // 上句等价于16         j = (i++) + (++i) + (i * 4);17         /*18          * 计算过程:19          * i++这个表达式,此时i为3,首先是赋值,再让i自增,所以这个表达式(i++)的结果为3,i操作后的值为420          * ++i这个表达式,此时i为4,首先让i自增,再赋值,所以i操作后的值为5,这个表达式(++i)的结果为521          * i * 4这个表达式,此时i为5,进行乘法,所以这个表达式(i*4)的结果为2022          * 23          * 最后三个表达式的结果相加:3 + 5 + 20 = 2824          */25         26         System.out.println(j);27     }28 }
1 package cn.temptation; 2  3 public class Sample05 { 4     public static void main(String[] args) { 5         // 加号 + 的用法: 6         /* 7          * 1、作为算术运算符的加号 8          * 2、作为正数的符号 + 9          * 3、作为字符串的连接符号10          */11         int result = 1 + 2;12         System.out.println(result);13         14         int x = +99;15         System.out.println(x);16         17         System.out.println("北京" + 2008);18     }19 }
1 package cn.temptation; 2  3 public class Sample06 { 4     public static void main(String[] args) { 5         // 2、赋值运算符:=、+=、-=、*=、/=、%= 6          7         // Java中的一个等号 = 表示的是将等号(赋值号)右侧的内容赋值给等号(赋值号)左侧的变量,习惯上称之为赋值号 8          9         int i = 2;10         // 完整描述:把整型的字面量常量2 赋值给 整型类型的变量i11         // 赋值号左侧的部分称为声明12         // 赋值号右侧的部分称为赋值13         System.out.println(i);14         15         // 一行语句中声明多个变量16         int x, y;17         18         // 下句语句先把123赋值给变量y,再将y赋值给x,所以最后x和y的值均为12319         x = y = 123;20         21         System.out.println(x);22         System.out.println(y);23         24         // 以+=为例,表示的是将赋值号(+=)左侧的变量 和 右侧的内容按照=之前的运算符进行相应的运算,操作后的结果再赋值给左侧的变量25         int j = 3;26         System.out.println(j);        // 327         // j += 4;28         // 上句等价于29         j = j + 4;30         System.out.println(j);        // 731         32 //        byte k = 5;33 //        // Type mismatch: cannot convert from int to byte34 //        k = k + 3;35 //        System.out.println(k);36         37         // 对于非默认数据类型的数据,使用带有算术运算符的赋值运算符时,会自动进行强制类型转换38         byte k = 5;39 //        k += 3;40         // 上句等价于41         k = (byte) (k + 3);42         System.out.println(k);43     }44 }
1 package cn.temptation; 2  3 public class Sample07 { 4     public static void main(String[] args) { 5         // 3、比较运算符:==、!=、>、<、>=、<= 6          7         // Java中使用 == 表示相等(内容相等) 8         // 比较的结果必然是一个boolean类型的值 9         int i = 2;10         int j = 3;11         int k = 2;12         13 //        System.out.println(i == j);        // false14 //        System.out.println(i == k);        // true15 //        System.out.println(i + j == j + k);            // true16         // 上句等价于17 //        System.out.println((i + j) == (j + k));        // true18         19         System.out.println(i != j);        // true20         System.out.println(i != k);        // false21         22         System.out.println(i > j);        // false23         System.out.println(i < j);        // true24         System.out.println(i >= j);        // false25         System.out.println(i <= j);        // true26         27         System.out.println(k <= k);        // true28     }29 }
1 package cn.temptation; 2  3 public class Sample08 { 4     public static void main(String[] args) { 5         // 逻辑运算符:&、|、!、^、&&、|| 6         // 参与运算的变量或表达式的值均为boolean类型 7          8         /* 9          * &:逻辑与,有一个是false得到的结果就是false10          * |:逻辑或,有一个是true得到的结果就是true11          * !:逻辑非,颠倒黑白12          * ^:逻辑异或,类似吸铁石13          */14 //        System.out.println(true & true);        // true15 //        System.out.println(true & false);        // false16 //        System.out.println(false & true);        // false17 //        System.out.println(false & false);        // false18         19 //        System.out.println(true | true);        // true20 //        System.out.println(true | false);        // true21 //        System.out.println(false | true);        // true22 //        System.out.println(false | false);        // false23         24 //        System.out.println(!true);                // false25 //        System.out.println(!false);            // true26         27 //        System.out.println(true ^ true);        // false28 //        System.out.println(true ^ false);        // true29 //        System.out.println(false ^ true);        // true30 //        System.out.println(false ^ false);        // false31         32         /*33          * &&:逻辑与(聪明与/短路与)如果参与运算的第一个变量或表达式为false,得到的结果就是false,其他的变量或表达式就不去执行;如果多个逻辑与参与运算,以此类推34          * ||:逻辑或(聪明或/短路或)如果参与运算的第一个变量或表达式为true,得到的结果就是true,其他的变量或表达式就不去执行;如果多个逻辑或参与运算,以此类推35          */36 //        System.out.println(true && true);        // true37 //        System.out.println(true && false);        // false38 //        // eclipse会显示警告:Dead code(位于后一个变量或表达式上)39 //        System.out.println(false && true);        // false40 //        // eclipse会显示警告:Dead code(位于后一个变量或表达式上)41 //        System.out.println(false && false);    // false42         43         // eclipse会显示警告:Dead code(位于后一个变量或表达式上)44         System.out.println(true || true);        // true45         // eclipse会显示警告:Dead code(位于后一个变量或表达式上)46         System.out.println(true || false);        // true47         System.out.println(false || true);        // true48         System.out.println(false || false);    // false49         50         // 在实际的开发中,常用的是:!、^、&&、||51     }52 }
1 package cn.temptation; 2  3 public class Sample09 { 4     public static void main(String[] args) { 5         // 结合自增 和 逻辑运算符的一道题 6         int i = 2; 7         int j = 3; 8          9         System.out.println((++i == 2) && (j++ == 3));        // false10         // 因为++i先自增再赋值,表达式++i的结果为3,所以++i == 2这个表达式的结果为false11         // 又因为使用聪明与,第一个表达式为false,后续的表达式不会执行,所以i = 3, j = 312         13         // 问:最终显示i和j的值为多少?14         System.out.println(i);            // 315         System.out.println(j);            // 316     }17 }
1 package cn.temptation; 2  3 public class Sample10 { 4     public static void main(String[] args) { 5         // 位运算符:&、|、~、^、>>、>>>、<< 6         /* 7          * 规则:(在二进制中)操作的是补码 8          * &:位与,进行操作的两个数的同一位上,有一个是0,该位运算的结果就是0 9          * |:位或,进行操作的两个数的同一位上,有一个是1,该位运算的结果就是110          * ~:位非,进行操作的数按位取反11          * ^:位异或,进行操作的两个数的同一位上,两个相同为0,两个不同为112          */13 //        System.out.println(2 & 3);        // 214 //        System.out.println(2 | 3);        // 315 //        System.out.println(~2);            // -316 //        System.out.println(2 ^ 3);        // 117         /*18          * 2:0000 001019          * 3:0000 001120          * 21          * 222          * 原码:0000 0000 0000 0000 0000 0000 0000 001023          * 反码:0000 0000 0000 0000 0000 0000 0000 001024          * 补码:0000 0000 0000 0000 0000 0000 0000 001025          * 26          * ~2:(操作补码)27          * 补码:1111 1111 1111 1111 1111 1111 1111 110128          * 反码:1111 1111 1111 1111 1111 1111 1111 110029          * 原码:1000 0000 0000 0000 0000 0000 0000 001130          */31         32         // 位异或^的用法:33         // 规律:一个数连续两次和另一个数做位异或运算,得到其本身的值34         // 可以应用在简单的加密解密中,连续两次进行位异或的那个数可以设置为密钥35         System.out.println(2 ^ 3 ^ 3);        // 236         37         /*38          * <<:左移,左边的高位删除,右边的低位补039          * >>:右移,因为左侧的最高位是符号位,所以要区分是0还是1:左侧的最高位是0,左侧补0;左侧的最高位是1,左侧补140          * >>>:无符号右移,不论左侧的最高位是0还是1,左侧补041          */42         System.out.println(2<<1);            // 443         System.out.println(2>>1);            // 144         System.out.println(-2>>1);            // -145         System.out.println(-2>>>1);            // 214748364746         /*47          * -2:48          * 原码:1000 0000 0000 0000 0000 0000 0000 001049          * 反码:1111 1111 1111 1111 1111 1111 1111 110150          * 补码:1111 1111 1111 1111 1111 1111 1111 111051          * 52          * 右移1位操作(操作补码)53          * 补码:1111 1111 1111 1111 1111 1111 1111 111154          * 反码:1111 1111 1111 1111 1111 1111 1111 111055          * 原码:1000 0000 0000 0000 0000 0000 0000 000156          * 57          * 无符号右移1位操作(操作补码)58          * 补码:0111 1111 1111 1111 1111 1111 1111 111159          * 反码:0111 1111 1111 1111 1111 1111 1111 111160          * 原码:0111 1111 1111 1111 1111 1111 1111 111161          */62     }63 }
1 package cn.temptation; 2  3 public class Sample11 { 4     public static void main(String[] args) { 5         // 依据参与运算的元素个数分类: 6         // 1、一元运算符:!、~ 7         // 2、二元运算符:+、-、*、/、%、&、|、&&、||、^等等 8         // 3、三元运算符:由两个符号组成的复合运算符       ? : 9         10         // 三元运算符:只有一个11         // 格式:(比较表达式) ? (比较表达式为真值时,执行的内容) : (比较表达式为假值时,执行的内容);12         13         int i = 2;14         int j = 3;15         int result = ((i > j) ? i : j);16         System.out.println(result);17     }18 }
1 package cn.temptation; 2  3 public class Sample12 { 4     public static void main(String[] args) { 5         // 需求:取得给定的两个数字中较大的一个(使用三元运算符来做) 6 //        int x = 28; 7 //        int y = 17; 8 //        int max = (x > y) ? x : y; 9 //        System.out.println(max);10         11         // 需求:取得给定的三个数字中最大的一个(使用三元运算来做)12         /*13          * 思路:14          * 1、要获取三个数字中最大的,先拿出两个数字比一比,先找出这两个数字中较大的一个15          * 2、拿着比较出来的较大的那个数字再和剩下的那个数字做比较,如果剩下的那个数字比它大,那么剩下的那个数字就是最大的16          *         否则,比较出来的较大的那个数字就是最大的17          */18         int a = 5;19         int b = 4;20         int c = 6;21         22         // 分步操作23 //        // 1、要获取三个数字中最大的,先拿出两个数字比一比,先找出这两个数字中较大的一个24 //        int temp = (a > b) ? a : b;25 //        // 2、拿着比较出来的较大的那个数字再和剩下的那个数字做比较26 //        int max = (temp > c) ? temp : c;27 //        System.out.println("最大的数字为:" + max);28         29         // 如果就要在一行语句中写,如何实现?需要使用三元运算符的嵌套30         // 如下写法,在实际开发中不要这样写,可读性很差,纯炫技耳!31         int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);32         System.out.println("最大的数字为:" + max);33     }34 }
1 package cn.temptation; 2  3 import java.util.Scanner; 4  5 public class Sample13 { 6     public static void main(String[] args) { 7         // 需求:通过键盘的录入,把输入的数据赋值给变量(交互操作的需求) 8  9         // 创建一个扫描器对象10         Scanner input = new Scanner(System.in);11         System.out.println("输入一个数字:");12         // 接收用户的键盘的录入,并赋值给声明的变量13         int i = input.nextInt();14         // 扫描器对象使用完毕后,关闭15         input.close();16         17         System.out.println("用户通过键盘录入的数字为:" + i);18     }19 }
1 package cn.temptation; 2  3 import java.util.Scanner; 4  5 public class Sample14 { 6     public static void main(String[] args) { 7         // 需求:通过键盘录入三个数字,比较获取其中最大的一个 8  9         // 声明三个变量来接收键盘录入的三个数字10         Scanner input = new Scanner(System.in);11         System.out.println("输入第一个数字:");12         int i = input.nextInt();13         System.out.println("输入第二个数字:");14         int j = input.nextInt();15         System.out.println("输入第三个数字:");16         int k = input.nextInt();17         input.close();18 19         // 分步操作20         int temp = (i > j) ? i : j;21         int max = (temp > k) ? temp : k;22         System.out.println("输入的数字:" + i + "," + j + "," + k + "中,最大的数字为:" + max);23     }24 }

 

转载于:https://www.cnblogs.com/iflytek/p/6443184.html

你可能感兴趣的文章
btrfs的使用(案例讲解)
查看>>
安装配置samba服务器和客户端
查看>>
filebeat 配置文件详解
查看>>
Swift与OC混编
查看>>
CentOS 5 (64位)下lnmp平台搭建
查看>>
redhat 6.5 配置WAS控制台中文
查看>>
记录一次处理https监听不正确的过程
查看>>
SCOM 2012 SP1服务器上安装和配置Veeam MP for VMware
查看>>
多核编程的四层境界
查看>>
Windows Phone 实用开发技巧(11):让StackPanel中的控件靠右对齐
查看>>
小记如何修改xen模块
查看>>
实时游戏对战引擎Photon
查看>>
C语言位操作控件属性
查看>>
nginx的安装及基本配置,及多个域名服务
查看>>
Servlet访问postgresql数据库并提取数据显示在前端jsp页面
查看>>
不改一行代码定位线上性能问题
查看>>
定义运算符
查看>>
git管理
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
加强Eclipse代码自动提示的方法
查看>>