JAVA基础(二)——基本运算符

JAVA基本运算符

Java中的语句有很多种形式,表达式就是其中一种形式。表达式是由操作数与运算符所组成的,操作数可以是常量、变量,也可以是方法,而运算符就是数学中的运算符号,如“+”、“-”、“*”、“/”、“%”等。在表达式(z+100) 中,z与100都是操作数,而“+”就是运算符。
Java提供了许多的运算符,这些运算符除了可以处理一般的数学运算外,还可以做逻辑运算、地址运算等。根据其所使用的类的不同,运算符可分为赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符和括号运算符等。

1.算术运算符
Java中算术运算符用在算术表达式中,其作用和数学中的运算符相同。在这里插入图片描述
算术运算符应注意以下问题:
①在使用算术运算时需要注意运算两侧类型:当两侧类型不统一时,运算结果和较大类型保持一致。
②如果对负数取模,可以把模数负号忽略不记,如:7%-2=1,但被模数是负数就另当别论。
③对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
④“+”除字符串相加功能外,还能把非字符串转换成字符串 。“+”运算符两侧的操作数中只要有一个String类型,一个是基本数据类型时,编译成class文件后,两个操作数就被连接成了一个新的String值。
自增自减例:


 public class test {
        public static void main(String[] args) {
              int a=3,b=3;   //定义整型变量a和b
              int x=6,y=6;    //定义整型变量x和y
              System.out.println("a = "+ a);  //输出变量a的值
              System.out.println("\t a++ = " + (a++) + ", a= "+ a);//先执行后自增
              System.out.println("b = "+ b);  //输出变量b的值
              System.out.print1n("\t ++b = " + (++b) + ", b= "+ b);//先自增后执行
              System.out.println("x = "+ x); //输出变量x的值
              System.out.print1n("\t x-- = " + (x--)+ ", x= "+ x);//先执行后自减
              System.out.println("y = "+y);  //输出变量y的值
              System.out.println("\t --y = " + (--y) + ", y- "+ y);//先自减后执行
   }
}

在这里插入图片描述
2.赋值运算符

运算符描述
=赋值
+=加等
-=减等
*=乘等
/=除等
%=模等

(1)等号(=)在Java中并不是“等于”的意思,而是“赋值”的意思。
赋值号(=)的功能是将赋值号右侧的结果存储到左侧的变量空间中。

int a = 6 ;     //将6存储到左侧a空间中
int b , c ;
b = c =// 将a空间中的值分别存放到b,c 空间中

(2)赋值号和算术运算符组合起来的混合运算符,它们即具有算术运算的特定,同时还具有 赋值运算的特定。
int a = 2;
a += 8; //相当于 a = a + 8;的运算,即把a空间中的值和8进行加法运算,把值重新存放到a空间中
3.关系运算符

运算符描述
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

关系运算符的结果都是boolean型,也就是要么是true,要么是false;关系运算符“==”不能误写成“=”。
例:

pub1ic class test{
    public static void main(String args[]) {
           System.out.println("3 > 1 = " + (3 > 1));   //使用大于号
           System.out.println("3 < 1 = " + (3 < 1));   //使用小于号
           System.out.println("3 >= 1 = " + (3 >= 1)); //使用大于等于号
           System.out.println("3 <= 1 = " + (3 <= 1)); //使用小于等于号
           System.out.println("3 == 1 = " + (3 == 1)); //使用等于号
           System.out.println("3 != 1 = " + (3 == 1)); //使用不等于号
  }
}

在这里插入图片描述
从以上程序可以发现,当使用关系运算符去判断一个表达式的成立与否时,若是判断式成立,会产生一个布尔值true;若是判断式不成立,则会产生布尔值false。
4.逻辑运算符

运算符描述
&按位与
l按位或
^异或
&&短路与
ll短路或

(1)按位与( & ) :两边都为true,结果是true,否则为false;
两边只要有一个false,结果必然是false。
(2)按位或( | ) :两边都为false,结果是false,否则为true;
两边只要有一个true,结果必然是true。
(3)异或( ^ ): 两边相同为false,两边不同为true。
(4)非( !):非真则假,非假则真。
(5)“ & ”和“ && ”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
(6)“ | ”和“ || ”的区别:单或时,左边无论真假,右边都进行运算;双或时,左边为真,右边不参与运算。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.移位运算符

运算符描述
<<左移
>>右移
&按位与
l按位或
^按位异或(相同为0,不同为1)
~按位取反

位运算:主要说的是二进制数位运算
(1)左移操作“<<”:将运算数的二进制码整体左移指定位数,左移之后的空使用“0”来补充,移出去的二进制数忽略不计。(<<:相当于给原数乘以2的倍数)
(2)右移操作“>>”:将运算数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充。移出去的二进制数忽略不计。若是正数使用“0”补充,若是负数使 用“1”补充;(>>:相当于给原数除以2的倍数)
(3)& 按位与运算原则:相同二进制数位上数值为1,结果为1,否则结果为0;
(4)| 按位或运算原则:相同二进制数位上数值为0,结果为0,否则结果为1;
(5)^ 按位异或运算原则:参与运算的两个数相应位相同则结果为0,异号则为1;
(6)~ 按位取反运算原则:二进制数位上0变1,1变0。

在Java中所有的数据都是以二进制数据的形式进行运算的,即如果是一个int型变量,要采用位运算时则必须将其变为二进制数据。每一位二进制进行与、或、异或操作的结果如下表:
在这里插入图片描述在这里插入图片描述
以上程序分别进行了与、或、异或的操作,下面为读者讲解具体的操作流程。3对应的二进制数据为011,但是在Java中整型数据的长度为32位,所以前面要补上29个0,所以结果为0000000 0000000 0000000 0000011,6 对应的二进制数据为0000000 0000000 0000000 00000110。

在计算机的数据表示中只定义了正数的表示形式,并没有定义负数的表示形式,所以负数一般都用补码的形式表示,正数的原码、反码、补码都相同,负数的反码是除符号位为1外,其他位全取反;补码就是“反码+1”。
在这里插入图片描述
在Java中也提供了左移“<<”及右移“>>”两种操作。左移操作是将运算数的二进制码整体左移指定位数,左移之后的空位使用0来填充。.
在这里插入图片描述
右移操作“>>”是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是正数则使用0填充,如果是负数则使用1填充。
在这里插入图片描述
以上的右移操作属于带符号位的右移操作,在Java 中也提供了无符号的右移操作符“>>>”,使用此操作将以0填充空出来的位。
在这里插入图片描述
对于位操作只适用于byte、short、 int、 char、 long 类型,而且位操作之后原始的操作内容并不会发生任何的改变。

Java运算符的优先级:
在这里插入图片描述

Java还有一些将算术运算符和赋值运算符结合成为新的运算符。
在这里插入图片描述
除了算术运算符和赋值运算符的结合可以存在于简洁的表达式中,自增、
自减运算符也同样可以应用在简洁的表达式中。下表列出了一些简洁写法的运算符及其范例说明。
在这里插入图片描述条件运算符(?:)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

public class Test {
   public static void main(String[] args){
      int a,b;
      a = 10;
      // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "Value of b is : " +  b );
 
      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "Value of b is : " + b );
   }
}

以上实例编译运行结果如下:
Value of b is : 30
Value of b is : 20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值