Java运算符

1.算术运算符

操作符描述
+加、求和
-减、求差
*乘、求积
/除、求商
%模、求余
++自增
自减
+:
   拼接字符串:两端有一端是字符串就表示拼接字符串---结果也是字符串
   算术运算:数值
   
/ :
  取商
  除数不能为0 
  5/0=报错 /by Zero Arithmetic Exception,
  -5.0/0.0=-Infinity   --无限大
  0/0=报错,
  0.0/0=NaN---not a number
%: 
  取余数
  8%3 = 2;
  18%4 = 2;
  
  8.2%3.2 = 1.8?   
  
++和——
    ++自增运算 a++  //a=a+1;
    ++在前先自增再用变量
    ++在后先用变量再自增
    
    --同理
    
    int a = 5;
    a = a++;
    System.out.println(a); -- 结果是5
    
    javap -verbose TestInc:反编译
  反编译后的main方法中执行的虚拟机指令助记符:
         0: iconst_5 //加载常量5到栈里
         1: istore_1  //把5这个常量弹出栈,存在第一个变量a中
         2: iload_1   //把第一个变量a的值入栈
         3: iinc          1, 1  //在a变量上自增1
         6: istore_1            //把栈中的5弹出到第一个变量a中
         //调用静态方法输出a
         7: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        10: iload_1
        11: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
        14: return
        
        练习:
        int a = 5;
        a = ++a;
        System.out.println(a); -- 结果是6
        
         0: iconst_5
         1: istore_1
         2: iinc          1, 1
         5: iload_1
         6: istore_1
         7: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        10: iload_1
        11: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
        14: return
      LineNumberTable:
        line 12: 0
        line 13: 2
        line 14: 7
        line 15: 14
        
        
        int a = 8;
        int b = (a++)+(++a)+(a*10);
        System.out.println(b);//118
        
         0: bipush        8   //常量入栈。。。。。。
         2: istore_1   
         3: iload_1
         4: iinc          1, 1
         7: iinc          1, 1
        10: iload_1
        11: iadd
        12: iload_1
        13: bipush        10
        15: imul
        16: iadd
        17: istore_2
        18: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        21: iload_2
        22: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
        25: return
  
  
  方法运行的时候数据是存在栈里:先进后出----队列:先进先出

2.赋值运算符

操作符描述
=直接赋值
+=求和后赋值
-=求差后赋值
*=求积后赋值
/=求商后赋值
%=求余后赋值
public static void main(String[] args){
		
		int a = 10; //赋值运算符
			
		a += 5; //在a基础上+5      a = a + 5;	
		
		System.out.println(a);	// 15
		
		int b = 20;
		
		b -= 3;// b = b - 3;
		
		System.out.println(b);	// 17
		
		int c = 30;
		
		c %= 4;// c = c % 4;
		
		System.out.println(c);
	}

3.关系运算符

操作符描述
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
public static void main(String[] args){
		Scanner input  = new Scanner(System.in);
		System.out.println("请输入用户名:");
		String name = input.next();
    
		//String password = input.next();
        //记住结论	基本数据类型比较相等用==,字符串相等用.equals()
    
		System.out.println("admin"=="admin");
		System.out.println(name);
		System.out.println((name=="admin")+"----==");//算术>关系>赋值
		System.out.println(name.equals("admin")+"---equals");
}

4.逻辑运算符

&&:两者都为真,结果为真,当第一个值为false的时候短路

&:两者都为真,结果为真,不短路

||:有一个值为真,结果为真,当第一个值为true的时候短路

|:有一个值为真,结果为真,不短路

!:取反

^:相同为假,不同为真

优先级:

​ !>&&>||

5.三元运算符

操作符语义描述
?:表达式?结果1:结果2表达式结果为真,得结果1表达式为假,得结果2

结果类型以大的那个结果类型为准:

public static void main(String[] args) {
		int num=0;
		String gender = num==1?"男":"女";
		System.out.println(gender);
		int a=5;
        System.out.println("a="+((a<5)?10.9:9)); // 9.0
		char x='x';
		int i=10;
		System.out.println(false?i:x); // 120
		System.out.println(false?100:x); // x
	}

6.位运算

& 、 |、 ^ 、 <<、 >>、 >>>

和逻辑运算的区别:

boolean是逻辑

数值是位运算

7.运算时的类型转换

  • 进行算数运算时:
  • 两个操作数有一个为double,计算结果提升为double。
  • 如果操作数中没有double,有一个为float,计算结果提升为float。
  • 如果操作数中没有float,有一个为long,计算结果提升为long。
  • 如果操作数中没有long,有一个为int,计算结果提升为int。
  • 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。

[注意:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。](

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值