java语言基础(13)——运算符基本用法(算数、赋值、比较、逻辑、位运算符)

来源:互联网 发布:淘宝直播平台公约 编辑:程序博客网 时间:2024/09/21 09:21

算数运算符:

+  - * / % ++  --

class Operator{public static void main(String[] args){ int x = 3; int y = 4; System.out.println(x+y); // 7 System.out.println(x-y); // -1 System.out.println(x*y); // 12 System.out.println(x/y); // 0 整数相除,只能得到整数 // 若要得到浮点数,把其中任意一个数字变成浮点数,如下: System.out.println(x*1.0/y); // 0.75         System.out.println(x%y); // 取余 3  // ++ -- // 1单独使用 在变量前后效果一样 x++; // 或 ++x; y--; // 或 --y; System.out.println(x);//4 System.out.println(x);//3 // 2参与运算时使用 int a = 1; int b = 2; int c = 3; int d = 4; int e = a++;// 后++  先赋值再++ int f = b--;// 后--  先赋值后-- int g = --c;// 前--  先--再赋值 int h = ++d;// 前++  先++再赋值 System.out.println("---------"); System.out.println(a);//2 System.out.println(b);//1 System.out.println(c);//2 System.out.println(d);//5 System.out.println(e);//1 System.out.println(f);//2 System.out.println(g);//2 System.out.println(h);//5}}

赋值运算符:

=  +=  -=  *=  /=  %=

int x = 1; 普通的赋值

x += 10;  把x与10相加再赋值给x

x -= 10; 把x与10相减再赋值给x

同理 *=  /=  %= 都是如此

注意 x +=10  与 x = x+10 的区别,比如:

class Operator{public static void main(String[] args){   // byte b = 1; // b = b+1; // 报错 可能损失精度           // 因为byte b 在运算是转为了int   // 现在要用byte类型的b接收,所以会报错      //System.out.println(b);  byte b = 1;  b += 1;      System.out.println(b); //2  // 可见 b += 1;并不等价于 b=b+1  b+=130;      System.out.println(b);//-124   //由此可见 b+=1 等价于 b=(byte)b+1;默认做了强制转换 }}


比较运算符:

==    !=    >   >=    <    <=

特点:无论表达式简单与否,返回的结果是boolean值

注意:== 不可写为=


逻辑运算符:

逻辑运算符,用于连接布尔型表达式或值,即两边的表达式必须都返回布尔值

&  |  ^  !  &&  ||

&   and(与)  |  or(或)  ^ xor(异或)   ! not(非)  && and(短路)    ||  or(短路) 

注意:^ xor(异或)  相同则为false 不同则为true

false ^ false = false   

false ^ true = true   

true ^ false = true  

true ^ true = false  

 && 与 & 的区别  || 与 | 的区别

&   |  会把左右两边的表达式都运算完

而 && 当左边表达式为真时,才会运算右边,|| 当左边表达式为假时,才会运算右边


位运算符:

注意:要做位运算,首先把数据转换为二进制补码,运算完后转回原码。

& 与(都为1则为1)    | 或(有1则1)      ~ 取反(1变0,0变1)      ^ 异或(相同则为0,不同则为1)    

根据前面学习的原码,反码,补码的知识,很容易得出运算结果。   

^ 异或的特点:一个数据对同一个(另外一个)数据异或两次,其本身不变。

位异或运算的小应用(两个数互相交换其值):

class Operator{public static void main(String[] args){  // 一个数据对另一个数据异或两次,其本身不变的小应用,  // 交换两个数的值  int a = 10;  int b = 20;  a = a^b;  b = a^b; //等量代换 a   a^b^b 结果是a 此句是把a赋值给b  a = a^b; //等量代换 a   a^b^a 结果是b 此句是把b赋值给a      System.out.println(a);//20  System.out.println(b);//10}}


<< 左移       >> 右移       >>> 无符号右移 

注意是补码运算否则容易搞混

左移:数据往左移动,左边最高位丢弃,右边用0补齐;

右移:数据向右移动,空缺位补0,最高位是1的,最高位补1;

无符号右移:无论最高位是0还是1,空缺位都用0补齐。结果永远是正数

3<<2; // 12 相当于 3*2的2次方

8>>2; // 2  相当于 8/2的2次方


三目运算符:

格式:表达式1?表达式2:表达式3;

如果表达式1的结果是true,则最终运算结果取表达式2的结果,否则取表达式3的结果。


0 0
原创粉丝点击