重构Java基础 (二) | 浅谈java运算符

14 篇文章 1 订阅

1. java中的运算符

Java中的运算符分为:算术运算符,移位运算符,比较运算符,位运算符,逻辑运算符,条件运算符,赋值运算符.接下来对以上运算符逐一详解

1.1 算术运算符

	+ - * / %   %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
	+:连接符。
	++,--

1.1.1 加减运算符

对基本数值类型的数据进行加减运算,结果的数据类型取决于两个操作数的数据类型。
当两个操作数类型为char,byte,short 和int类型时,其运算结果的数据类型必为int 。
"+"还用于连接两个对象的运算,将用于连接两个字符串连接起来。

int a=a+1;//把(a+1)的值赋值给a
String str=”abc”+”bcd”;//连接两个字符串

1.1.2 乘法运算符

运算符用于对两个基本数值类型的数据进行相乘运算,其运算的数据类型取决于两个操作数的数据类型。注意:当两个操作数类型为char , byte , short,int类型时,其运算结果数据类型必为int。

int a=b*c; // b=10 c=10   结果 :a=100

1.1.3 除法运算符

除运算用于两个基本数值的类型数据进行相除运算。当相除的两个操作数均为整数时,如果运算结果为整数,则将运算结果作为返回值返回;如果运算结果不为整数,则运算结果整数部分作为返回值返回。当相除的两个操作数只要有一个为浮点数时,则运算结果必为浮点数。当除运算中右操作数取值为0时,如果操作数均为整数,则会抛出算术异常ArithmeticException;如果操作数中至少有一个为浮点数时,则结果为一个Infinity值。

int a=b/c; // b=10,c=10  结果:a=1

1.1.4 取模运算符

取模运算%用于从除法中获得两数相除的余数。取模运算的操作数既可以是整数,也可以是浮点数,取模的过程实际是用左操作数连续减去右操作数,直到相减的结果小于右操作数,此时的结果即为余数。此过程适于操作数中有浮点数和负数的情况。当取模运算中右操作数取值为0时,如果操作数均为整数,则会抛出算术异常ArithmeticException,因为取模运算归根结底为算术除法运算;如果操作数至少有一个浮点数,则结果为一个NAN(Not a Number)值。取模运算结果的正负符号完全取决于左操作数,即和左操作数的正负符号一致。

int a=b%c; // b=10,c=10 结果:a=0

1.2 移位运算符

Java定义了几个位运算符,分别为带符号左移位运算符<<,带符号右移位运算符>>和无符号右移位运算符>>>,它可以应用到整数类型,长型,整型,短整型,字符和字节。位运算符作用于位,并执行逐位操作

1.2.1 左移运算符

左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方

public class data{
public static void main(String[] args){
int a=2;
int b=2;
system.out.println("a 移位的结果是:"+(a<<b));}
}
// a 移位的结果是:8

1.2.2 右移运算符

右移运算符用符号“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方。

public class data{
public static void main(String[] args){
       int a=16;
       int b=2;
       System.out.println("a 移位的结果是:"+(a>>>b));
}}
// a 移位的结果是:4

1.2.3 带符号的右移运算符

带符号的右移运算符用符号“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1

public class data17{
public class data19{
public static void main(String[] args){
       int a=16;
       int c=-16;
       int b=2;
       int d=2;
       System.out.println("a 的移位结果:"+(a>>b));
       System.out.println("c 的移位结果:"+(c>>d));
  }
}


//结果
a 的移位结果:4
c 的移位结果:-4


1.3 比较运算符

Java语言共提供了6种比较运算符,它们分别为小于,小于等于,大于,大于等于,等于,不等于。这6个比较运算符适合所有基本类型数值之间的比较,但布尔型值只能与布尔型值比较,比较运算的结果是一个布尔型值,整个比较表达式可以作为逻辑运算符的操作数,除了可以用于基本类型数值之间的比较,也可以应用于对象变量之间的比较。字符型值可以作为比较操作数与其他基本类型数值(除布尔型值外)进行比较,因为每个字符都有一个对应的标准字符码。当字符型值进行比较运算时,实际比较的是该字符对应的一个整数字符码。

特点:该运算符的特点是:运算完的结果,要么是true,要么是false。

  1. == 和!= 运算符
    == 和!= 运算符:关系运算符等于(==)和不等于(!=)不仅可以用于基本类型数值之间的比较,而且可以用于引用型之间的比较,但是这种引用型之间的比较不同于基本类型数值之间的比较,是对象的引用值,即内存地址。两个引用变量之间的等于比较是在判断这两个变量是否引用了同一个对象。如果需要判断两个对象的内容是否相等,则应该使用equals()方法。在java.lang.Object中定义的equals()方法用来比较两个对象的内容是否相等。
int a=1,b=1;
a==b的结果是true
String s1="123",s2="123";
s1==s2的结果是true
String s1="123";String s2=new String("123");
s1==s2的结果是false;
  1. > 或 >=运算符
    > 或 >=运算符: 分别对应大于和大于等于,根据比较的结果返回值为true或false
Boolean a=c<b; //  c=20,b=10 结果:a=false 

3.< 或 <=运算符
< 或 <=运算符:分别对应小于和小于等于,根据比较的结果返回值为true或false。

Boolean a=c>b; //c=20,b=10  结果:a=true

1.4 位运算符

Java语言中共提供了4种按位运算符,分别为按位与(&), 按位或(|),按位异或(^)和按位非(),这四个运算符适合所有整型数据。进行按位运算时,总是先将字符型、字节型、短整型值转换为整型再进行位运算。对于布尔型运算只有按位非()不能用于布尔型数值。其他3种位运算都可以把布尔型数值当作一个具有一位值进行按位运算。布尔型值为true对应为1,false对应为0,尽管位运算可以应用于布尔型,但不能将布尔型值和其他整数型值混合使用,如混合使用,将发生类型转换错误,因为布尔型值和其他基本类型之间不能进行相互转换。

1.4.1 与运算

& 运算符:&(与)运算符对于两个整型操作数中对应的位执行操作。详情见下表:

X位Y位结果
100
010
000
111

1.4.2 或运算

| 运算符:|(或)运算符对于两个整数型操作数中对应的位执行操作。详情见下表:

X位Y位结果
101
011
000
111

1.4.3 异或运算

^ 运算符:^(异或)运算符对于两个整数型操作数中对应的位执行操作。详情见下表:

X位Y位结果
101
011
000
110

1.5 逻辑运算符

逻辑运算符共有三种:!(逻辑取反),&&(逻辑与),||(逻辑或)。它们的操作数类型必须是一个布尔值或布尔表达式。

1.5.1 !运算符

public class data{
public static void main(String[] args)
  int a=2;
  System.out.println("a 非的结果是:"+(~a));
  }
}

1.5.2 && 运算符

&& 运算符:类似按位与的公式。左右操作数必须是一个布尔值或是一个布尔表达式。该运算符存在逻辑短路的现象:A&&B&&C。如果A为false,那么后面的表达式就不运算了;

public class data{
public static void main(String[] args){
 int a=129;
 int b=128;
 System.out.println("a 和b 与的结果是:"+(a&b));
}}

// 运行结果
a 和b 与的结果是:128

1.5.3 || 运算符

|| 运算符:类似按位与的公式。左右操作数必须是一个布尔值或是一个布尔表达式。该运算符存在逻辑短路的现象:A||B||C。如果A为true,那么后面的表达式就不运算了。

public class data{
public static void main(String[] args)
 int a=129;
 int b=128;
 System.out.println("a 和b 或的结果是:"+(a|b));
  }
}

// 运行结果
a 和b 或的结果是:129

1.6 条件运算符

条件运算符是Java语言中唯一的一个三目运算符(三个操作数)相当于if…else。其格式:

条件值?表达式1: 表达式2

整个表达式的值、表达式1的值、表达式2的值的类型必须一致。当条件值为true,那么整个表达式的最终结果为表达式1的结果;如果为false,最终结果就是表达式2的结果。条件运算符最终的结果类型,是由两个子表达式来决定的,两个子表达式之间进行类型转换。转换规则满足向取值范围宽的方向转换。
实例:

public class Test {
public static void main(String args[]){
      int a , b;
      a = 10;
      b = (a == 1) ? 20: 30;
      System.out.println( "Value of b is : " +  b );
      b = (a == 10) ? 20: 30;
      System.out.println( "Value of b is : " + b );
   }
}
// 结果:
Value of b is : 30
Value of b is : 20

1.7 赋值运算符

赋值运算符用于将具体数值赋给变量。
赋值运算符有:=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=
格式:

类型  变量名=

1.8 复合运算符

复合运算符就是可以同赋值运算符进行不同的组合,组合详情如下表:

复合运算符含义复合运算符含义
+=a+=b等于a=a+b<<=a<<=b等于a=a<<b
-=a-=b等于a=a-b>>>=a>>>=b等于a=a>>>b
*=a*=b等于a=a*b&=a&=b等于a=a&b
/=a/=b等于a=a/b|=a|=b等于a=a|b
%=a%=b等于a=a%b^=a^=b等于a=a^b
>>=a>>=b等于a=a>>b~=a~=b等于a=a~b

2. 运算符的优先级

Java语言中的运算符有着不同的级别,优先级高的运算符先被运行,具体运算符的级别由高到低排列如下:

单操作数运算符 > 算术运算符 > 移位运算符 > 比较运算符号 > 位运算符 >逻辑运算符 > 条件运算符 > 赋值运算符

3.总结

  1. 算术运算符:
    + - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
    +:连接符。
    ++,–
  2. 赋值运算符:
    = += -= *= /= %=
  3. 比较运算符:
    特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
  4. 逻辑运算符:
    & | ^ ! && ||
  • 逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
  • &: 只有两边都为true结果是true。否则就是false。
  • |:只要两边都为false结果是false,否则就是true
  • ^:异或:和或有点不一样。
  • 两边结果一样,就为false。
  • 两边结果不一样,就为true.
  1. & 和 &&区别:
    & :无论左边结果是什么,右边都参与运算。
    &&:短路与,如果左边为false,那么右边不参数与运算。

  2. | 和|| 区别:|:两边都运算。
    ||:短路或,如果左边为true,那么右边不参与运算。

  3. 位运算符:用于操作二进制位的运算符。
    & | ^
    << >> >>>(无符号右移)

第一篇:重构Java基础 (一)| 了解java & java中的常量与变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值