一、介绍
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
二、笔记
1.算数运算符
package com.hgd.study2; /** * 算数运算符 * + - * / % ++ -- * @author HuTiger * */ public class ArithmeticOperator { public static void main(String[] args) { /* * %取模:取余数,一般用来判断一个数能不能被整除,比如分页的时候 * 场景: * 数据库表中有N条数据,要求每页显示10条,用一个表达式来表示他的总页数 * 如果N%10==0 n/10 else n/10+1 * */ int i=25; int result =i%5;//定义一个变量用来保存取模后的数据 System.err.println(result); result =i%6;//定义一个变量用来保存取模后的数据 System.err.println(result); result=i%10; System.err.println(result+" "+i/10); System.out.println("----------------------"); //------------------------------------- /* * ++ 自增:在自身的数值上面增加相应的大小 */ int num =1; num=num+1; System.out.println(num);//2 num++;//相当于num=i+1 System.out.println(num); /* * ++在前:先进行自增再运算 * ++在后:先运算再自增 */ int a=1; int b=1; a++; ++b; System.out.println(a); System.out.println(b); int ra=1+ a++; int rb=1+ ++b; System.out.println(ra); System.out.println(rb); /* * 练习 */ // int i=1; // int result=i+ i++ + ++i + --i - i-- + i++; // int i=1; // int r=i++; // System.out.println(r); } }
2.关系运算符
package com.hgd.study2; /** * 关系运算符 * == != > < >= <= * 表达式的结果为布尔类型 * @author HuTiger * */ public class RelationalOperator { public static void main(String[] args) { System.out.println(1==1); System.out.println(2>3); int i=10; System.out.println(i%3>4); } }
3.位运算符
package com.hgd.study2; /** * 位运算符: * 按位与运算符(&) * 按位或运算符(|) * 按位异或运算符(^) * 按位取反运算符(~) * 左移位运算符(<<)和右移位运算符(>>) * 1.按位与运算符(&) * 参与运算的两个值,如果两个相应的位都为1,则结果为1,否则为0. * 即0&0=0,0&1=0,1&0=0,1&1=1 * 2.按位或运算符(|) * 参与运算的两个值,如果两个相应的位都为0,则结果为0,否则为1. * 即0&0=0,0&1=1,1&0=1,1&1=1 * 3.按位异或运算符(^) * 参与运算的两个值,如果两个相应的位某一位是1,另一个是0,那么按位异域(^)在该位的结果为1 , * 也就是说如果两个相应位相同,输出位为0,否则为1. * 即0&0=0,0&1=1,1&0=1,1&1=0 * 4.按位取反运算符(~) * 按位取反运算符(~)属于一元运算符,他只对一个自变量进行操作(其他都是二元运算符) * 按位取反生成与输入位的相反的值--若输入0,则输出1,若输入1则输出0 * 即:~0=1,~1=0 * 5.左移位运算符(<<) * 运算符<<执行一个左移位。作左移位运算时,高位溢出,低位补0,右边的空位补0,在不产生溢出的情况下,数据左移1位相当于x2例如 * int a=64; * b=a<<1 //b=128 * 6.右移位运算符(>>) * 运算符<<执行一个右移位(带符号),操作数的构成二进制位右移若干位,低位溢出舍弃,高位补充原来高位的值(右移一位相当于除2取商) * 例如 int a=16,b; * b=a>>2; //b=4 * * @author HuTiger * */ public class BitwiseOperators { }
4.逻辑运算符
package com.hgd.study2; /** * 逻辑运算符:& | ! ^ && || * 运算符两边的表达式的值为布尔值,运算的结果也是布尔值 * @author HuTiger * */ public class LogicalConnective { public static void main(String[] args) { /* * 必须两者为true结果才为true 否则结果是false,是一个并且关系 */ System.out.println(1<2&&2>3); /* * || 或的关系 两者同为false 结果是false 其他都是true */ /* * & 并且的关系 和&&的区别:本身表达式的结果没有区别,区别在于运算过程 */ //短路现象:当表达式前者的计算结果已经决定了整个表达式结果的时候,后面的内容不再进行计算 System.out.println(1<2&&2>3); System.out.println(1<2&2>3); /* * | */ } }
5.三元运算符
package com.hgd.study2; /** * 三元运算符 * 结果=条件? 表达式1:表达式2; * @author HuTiger * */ public class TernaryOperator { public static void main(String[] args) { int i=10; int result=i>=20?i:i+10; System.out.println(result); /* * 练习: * 数据库的总条数是count * 每页显示10条数据 * 需要计算出总页数?? */ int count=121; result=count%10==0 ? count/10:count/10+1; System.out.println(result); /* * 练习: * 将一个5(score)分制分为 : * 5分的评价等级A * 4==B 3==C 其他是D */ int score=4; String lv; lv=score>2? score==3?"c":score==4?"b":"a" :"d"; System.out.println(lv); } }