黑马程序员--JAVA基础之运算符与表达式

------- android培训java培训、期待与您交流! ---------- 
 
Java 语言中定义了若干运算符号,完成某种特殊的运算
按照参与运算的数据的数量分为三种类型
一元 / 单目运算符
二元 / 双目运算符
三元 / ( ) 目运算符
 
按照运算符的功能分为六种

算术运算符  关系运算符  逻辑运算符

位运算符  移位运算符  条件运算符

                                                                                                                            算数运算符:

加法运算符  a +b
减法运算符  a-  b
乘法运算符  a *  b
除法运算符  a/  b
模运算符  a% b
"+","-","*"的用法和和作用于普通算数中的一模一样,这里就不多说了,小学的东西,说两个不一样的:
1,"/"(除)运算符先来看个例子:
 

 public class Demo{
  public static void main(String[] args){
       int x=12;
       int y = 5;
      System.out.println(x/y);
//结果是:2
   }
}

从运行结果我们可以看出,如果被除数都是整数,那么商也是整数,需要说明的是当被除数是整数类型时,零不能作为除数,如果被除数是浮点型时,除数为零,会报错。

2,"%"(取模):

%运算符是求两个数相除的余数,也成为取模运算符,与除号一样,任何整数都不能对0取模,%运算符可以对整型数据取模,也可以对实型数据取模。

 public class Demo{
  public static void main(String[] args){
       int a=25;
       int b = 6;
       int x=-a%-b;
       int y=a%b;
      System.out.println("x的余数是:"+x);
     //结果是:-1;
      System.out.println("y的余数是"+y);
    //结果是:1;
   }
}

由以上运行结果可以看出,不管是整型还是实型的取模运算,余数的符号与被除数a的符合相同。

数据类型转换

数据类型的转换即将一种数据类型转换成另一种数据类型
数据类型转换过程中数据的类型必须可转换
应用场合
二元运算符的两个操作数类型不同
表达式的类型与变量的类型不同
转换方式
隐型 / 自动 类型转换 / 造型 (系统自动完成)
显型 / 强制 类型转换 / 造型 (手工完成)
自动类型转换:
自动类型转换是指不需要进行任何多余操作,系统会自动对数据类型进行转换:
(低)byte-->short-->int-->long-->float-->double(高)或者;
(低)char-->int-->long-->float-->double(高)
左边的数据类型赋值给右边的数据类型时,就可以实现自动类型转换。

强制数据类型转换格式:

类型长度比较大的值前面写上长度小的类型:

(数据类型名)需要转换的值

(target-type)value;//target-type是指想要转换的类型,value值被转换的值。例如:int a=97;  char c = (char)a;

float与double间转换时,格式重新计算。

整数运算的临界值

当整数进行算术运算时,如果超过了边界值将自动截断超出部分,只保留对应数据范围内的数据,此数据将失去原始值所表示的真实性;

字符串连接运算符 +:

连接运算符是将字符串参与到加运算中
任何值与字符串进行“ +” 运算时,均当成字符串处理,运算结果为连接完成后的字符串

5+3   8

5+“3”  “53”

1+2+“3”  “33”

int a = 1,b = 2;

“a=”+a+ “,b=”+b   a=1,b=2

++运算符:

自加(++)运算符将把变量的值在原来值的基础上递增1,++运算符有分为两种:一种是前置运算符(如++x);另一种是后置运算符(如x++);

 public class Demo{
  public static void main(String[] args){
             int y = 10;
             int x=10;
             System.out.println("y="+y);
             //结果是:11
      System.out.println("x="+x);
        //结果是:10
   }
}
前置运算符就是:先让y的值加1,然后结果的值赋给y,于是y的输出就是11.后置运算符:先把x的值赋给x,然后,将x的值加1,并存储到内存空间,于是X输出的值就是10,而存储在内存中的x值为11.自减(--)运算符运算规则同自加运算一样。

关系运算符

用于比较两个值之间的关系,运算结果为布尔值的 true false
大于  3>4
大于等于  >= 4.5>=1.8
小于  3<-5
小于等于  <= 3.5<=5
等于  == 3==3  5==4  true==true
不等于  != false!=false  2.7!=3

逻辑运算符

逻辑运算是对布尔值的组合关系
逻辑运算结果均为布尔值 true false
逻辑运算分为三种
逻辑与  && 
逻辑或  ||
逻辑异或 
逻辑非  !

逻辑与&(&&)所表达的语义是:只有当exp1“与”表达式exp2的值同时为true时,这个表达式的值才为true,否则整个表达式的值为false。

逻辑或(||)所表达的语义是:只要表达式exp1“或者”表达式exp2的值中有一个为true,整个表达式为true,否则整个表达式为false,又称短路。

逻辑非(!)所表达的语义是:只要表达式exp为true,整个表达式的值就为false,否则整个表达式的值为true,所以它又称为逻辑反。

位运算符

位运算是针对数字的二进制表示格式进行运算的一种特殊运算。
位运算共包含四种运算,操作数均为整数
按位取反  ~15
按位与  13&21
按位或  33|15
按位异或  171^14
 
按位取反(~):
对操作数的每一个二进制位进行“取反”操作
l 格式: ~ 操作数

  int a =42;

  intaa = ~a;

  System.out.println(“aa=” +aa);

42     00101010

     

-43    11010101
 
按位与(&):
将操作数的对应位逐位进行位逻辑与运算
l 格式:操作数 & 操作数
用途:将操作数的指定二进制位置 0

42 & 15        

       00101010

        &  00001111

              00001010

   取后四位

按位或(|):
将操作数的对应位逐位进行位逻辑或运算
格式:操作数 | 操作数
用途:将操作数的指定二进制位置 1

42 & 15        

       00101010

        |  00001111

              00101111

  后四位变成1

按位异或(^):

将操作数的对应位逐位进行位异或运算
格式:操作数 ^ 操作数
用途:将操作数的指定二进制位置取反

42 & 15        

       00101010

        |  00001111

              00100101

  后四位进行取反操作

移位运算符:

对操作数的二进制表示形式进行左右移动
移位运算共包含三种运算
左移  <<
右移  >>
无符号右移  >>>
 
左移:
格式: “op1<< op2”
l 将操作数 op1 的二进制位向左移 op2( 正整数 )
l 低位补零

int  a =42;

intaa = a << 2;

System.out.println(“aa=” +aa);

42       00101010

         <<2 

168      10101000 相当于 42*22 = 168

运算速度比乘法快,但要注意数据溢出
 
右移:
格式: “op1>>op2”
l 将操作数 op1 的二进制位向右移 op2( 正整数 )
l 原数为正数,高位补零;原数为负数,高位补 1

int  a =42;

intaa = a >> 2;

System.out.println(“aa=” +aa);

42       00101010

        >>2 

10      00001010 相当于 42/22 = 10.5

运算速度比除法快,但要注意数据精度问题

无符号右移:

格式: “op1>>>op2”
l 将操作数 op1 的二进制位向右移 op2( 正整数 )
l 高位补零

int  a =42;

intaa = a >>>2;

System.out.println(“aa=” +aa);

条件表达式:

条件运算符是目前唯一的三目运算符

格式:
条件表达式?表达式 1 :表达式 3>2?4:5
true/false? 1 :值 2
当条件为真时,该运算符的结果是表达式 1
当条件为假时,该运算符的结果是表达式 2
 
表达式:
l 使用运算符和括号将操作数连接起来求值的式子
l 操作数可以是变量、常量或方法 ( 后期 )
表达式类型:
算术表达式
关系表达式
逻辑表达式
赋值表达式
复合赋值运算

算数表达式:

用算术运算符和括号将操作数连接起来的式子
结果为整数或实数
 
关系表达式:
用关系运算符将两个表达式连接起来的式子
结果为布尔型的值
 
逻辑表达式:
用逻辑运算符将关系表达式和布尔值连接起来的式子
结果为布尔型的值
 
赋值表达式:
l 用赋值运算符将一个变量和一个表达式使用等号连接起来的式子
l 格式:
变量名 = 表达式;

int a = 15;

int b = 20;

int c = a+b;

int d = e = f = c;

int w = (a = 1) + ( b = 2);

 
复合赋值运算:
复合赋值运算是一种特殊的赋值形式
格式:
变量名  复合赋值运算符 表达式
复合赋值运算符
+=    -=    *=    /=    %=
<<=   >>=  >>>=  &=  |= 

  a+=b  计算形式等同于  a = a + b

  a+=b+5  计算形式等同于  a = a + (b+5)

 ------- android培训java培训、期待与您交流! ----------

详细请查看: http://edu.csdn.net

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值