黑马程序员 Java基础<二> 运算符

--------- android培训java培训、期待与您交流! ----------
      
    运算符是java语言中的重要组成部分,只要有数据操作就离不开运算符。下面总结一下java丰富的运算符。
    什么是运算符
     简单的说:就是把常量或变量连接的符号。一般参与运算使用。

一、运算符的分类

    1、 算数运算符

         正号:+    负号:-
         加号:+    减号:-   乘号:*     除号:/   取模:%
         自增:++   即自加1,可至于前或后, 如:++a(a先自增,在参加运算)a++(a先参与运算后,a再自增)
         自减:--   即自减1,可至于前或后, 如:--a(a先自减,在参加运算)a--(a先参与运算后,a再自减)
         连接符号:+   字符串相加  如:"He"+"llo" 结果给是"Hello"
        注意:自增 自减 只能用于变量 不能用于常量 ++3,1--    
<pre name="code" class="java">public class Temp {
  	public static void main(String[] args) {
  	// "%"的细节
  		System.out.println(5 %-4);//结果为1  模数不影响符号
  		System.out.println(-5% 4);//结果为-1 被模数为符号位
  		// "/"的细节
  		//对于"/"的整除和小数除是有区别的:整数之间做除法时,只保留整数部分舍去小数部分
  		System.out.println(150/100*100);//结果为100
  		System.out.println(150.0/100*100);//结果为150.0
  		// "+"的细节
  		// "+"除为字符串相加功能外,还能把非字符串转换为字符串
  		System.out.println("1+1="+1);  //结果为1   因为1前面为连接符自动转换成了字符串与前面连接  
  		System.out.println("1+1="+1+1);//结果为11  注这里不是数字11而是字符串11
  		
  	}

}
 

    2、 赋值运算

         =、+=、-=、*=、/=,%=
         如:int x,y,z; x=y=4;
             int a = 3; a+=4;相对于a=a+4,但和a=a+4有本质区别。
        

    3、 比较运算符 

         运算符       运算                 范例                       结果
            ==        相等于               6==3                       false
            !=        不等于               6!=3                       true
            <         小于                 6<3                        false
            >         大于                 6>3                        true 
            <=        小于等于             6<=3                       false
            >=        大于等于             6>=3                       true
        instanceof   检测是否是类对象  "java" instanceof String       true 
        注1:比较运算符结果为boolean类型 值0和1。
        注2:比较运算符"=="  不能写出"="。
          

    4、 逻辑运算符

         &与运算          |或运算     ^异或   !非运算    
         &&短路与运算    ||短路或  
         &运算规律 
             &运算的两边只要有一个是false,结果就是false
             只有都为true,结果才是true
         |运算规律
             |运算的两边只有一个true,结果肯定是true.
             只有两边都为false,结果是false. 
         ^异或运算规律
              ^异或的两边结果如果相同,结果是false
              两边的结果不同,结果就是true
         
public class Temp {
  	public static void main(String[] args) {
  		/**
  		 * &&和&运算的结果是一样的。但是运算过程有点小区别。
  		 * &: 无论左边的运算结果是什么,右边都参与运算。 
  		 * &&:当左边为false时,右边不参与运 
  		 */
  		if ( 10!=10 & 10/0==0 ){
  			System.out.println("&");  //程序报错 两边都运行
  		}
  		if ( 10!=10 && 10/0==0){
  			System.out.println("短路&&");//没有报错 左边false 程序结束

  		}

  		/**
  		 * ||和|运算的结果是一样的。但是运算过程有点小区别。
  		 * 
  		 * |:无论左边的运算结果是什么,右边都参与运算。 
  		 * ||:当左边为true时,右边不参与运算的。		
  		 */	
  		if ( 10==10 | 10/0==0){
  			System.out.println("|"); //程序报错 
  		}
  		
  		if ( 10==10 || 10/0==0){
  			System.out.println("短路||"); //程序执行左边为true 右边不执行 
  		}
  		

  	}

}
           

    5、位运算符

       左移:<<           3 << 2 = 12 相当于 3*2*2=12     
       右移:>>           3 >> 1 = 1  相当于 3/2=1
      无符号右移:>>>     3 >>> 1 = 1  
         与:&            6 & 3 = 2   
         或:|            6 | 3 =7
       异或: ^            6 ^ 3 =5
       反码:~           ~6 = -7 
       <<:左移几位其实就是该数据乘以2的几次方。左移:可以完成2的次幂运算
       >>:右移几位其实就是该数据除以2的几次幂。右移:对于高位出现的空位,原来高位是什么就用什么补这个空位
       >>>:无符号右移:数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。 
      ^: 一个数异或同一个数两次,结果不变 
public class Temp {
  	public static void main(String[] args) {
  		/**
  		 * 对连个整数整数变量的值进行互换(不用第三方变量)
  		 */
  		//一般方法 第三方变量
  		  int a =3,b=5,c;
  		  c = a;
  		  a = b;
  		  b = c; 
  		//不用第三方变量 但这方式两个整数的数值过大,
  		//会超出int范围,会强制转换。数据会变化。
  		  a = a + b;//a = 3 + 5
  		  b = a - b;//3 + 5 - 5 = 3
  		  a = a - b;//3 + 5 - 3 = 5;
  		// 使用 异或 一个数异或同一个数两次,结果不变 
  		  a = a ^ b; 
  		  b = a ^ b; // a ^ b ^ b = a
  		  a = a ^ b; // a ^ b ^ a = b
  		// 面试时用第三种 为了阅读性 使用第一种  
  	}

}
        

   6、 三元运算符

public class Temp {
  	public static void main(String[] args) {
  		/**
  		 * 格式
  		 *  (条件表达式)?表达式1: 表达式2
  		 *  如果条件为true,运算结果为表达式1
  		 *  如果条件为false,运算结果为表达式2
  		 */
  		int x=1,y=2,c;
  		c = (x>y) ? x : y;
  		System.out.println(c);//打印2 条件为false 结果为表达式2
  		c = (true)? x : y;
  		System.out.println(c);//打印1 条件为true 结果为表达式1
  	}

}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">     </span>

二、运算符优先级

    运算级别由高到低 从左向右运算

1级----- 方法调用:[ ] . ()

2级----- 一元运算符:! 、~ 、++、-- 、+、-;强制类型转换:( );创建:new

3级----- 二元运算符:*和 / 优于 + 和 -

4级----- 位运算:<<、>> 、>>>

5级----- 比较运算符:< 、> 、<= 、>= 、instanceof优于 ==、!=、

6级----- 逻辑运算符:&、|、^、!、&&、||

7级----- 三元运算符:? : 

8级----- 算数运算符等: =、+=、-=、*=、/=、%=、&=、|=、 ^=、 <<=、>>= 、>>>=


三、转义字符

    什么是转义字符:通过"\"来转变后面字母或符号的含义。如:\n表示换行 
    常用转义字符 
    \b:退格       \n:换行    \t:制表符,tab键
    \\: 反斜杠     \r:回车   \':单引号         \":双引号
    注:window系统中回车符由2个符号组成 \r\n
        linux中回车符是\n
  

--------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值