java语言的运算符

目录

小白的疑惑

大白话运算符概念

运算符概念

运算符分类

特别注意

代码定天下

二元运算符

关系运算符代码

逻辑运算符

位运算符

拓展运算符

三目运算符


小白的疑惑

很多没接触编程的小伙伴都会顿感疑惑,啥是运算符?

运算符

大白话运算符概念

小学算过加减乘除吧

比过大小吧

学过与、或、非,即包含、交集之类的吧

那在做这些运算的时候,我们是不是都有相应的符号去表示?

这些表示运算的符号就叫运算符!!!

运算符概念

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算

运算符分类

谁能永远就能认识那几个运算符,学习的过程就是不断求知的过程,要有一种精神,让我研究的没有新的东西出现的时候我就换个方向研究。

那好了,我们看一下关于运算符部分会多少才是尽头?

分类表现形式
算术运算符+,-,*,/,%,++,--

赋值运算符

=
关系运算符>,<,>=,<=,==,!=,instanceof
逻辑运算符&&,||,!
位运算符&,|,^,~,>>,<<,>>>
条件运算符
扩展赋值运算符+=,-=,*=,/=

 

 

 

 

 

 

 

 

特别注意

java中的==判断两个变量是否相等;

代码定天下

二元运算符

运算规则为:

  • 整数型只要有long类型参与运算,结果为long类型
  • 没有long类型参与运算都默认为int类型
  • 有double类型参与的运算,结果为double类型
  • ++,--放置的位置不同,导致的运算结果也会不同
class Operator{
    //二元运算符
    int a = 45;
    int b = 30;
    int c = a+b;
    int d = a-b;
    int e = a*b;
    int f = a/b;
    int g = a%b;

    System.out.println(c); //75
    System.out.println(d); //15
    System.out.println(e); //1350
    System.out.println(f); //1
    System.out.println(g); //15

}

 

 

class Operator{

    public static void main(String[] args){

    long money = 18888888888L;
    int money1 = 299;
    short money2 = 16;
    byte money3 = 5;

    System.out.println(money+money1+money2+money3);//long
    System.out.println(money+money1+money2);       //int
    System.out.println(money+money1);              //int
    }

}
public class OperatorPlus {

	public static void main(String[] args) {
		
		//++ --    自增、自减一元运算
		int order = 3;
		System.out.println(order);       //正常打印order值,结果为3
		int amountOrder = order++;       //后++先运算再加1
		System.out.println(order);       //参与后++运算后3+1=4
		int amountOrder1 = ++order;      //前++先加1再运算
		System.out.println(order);       //结果为5
		System.out.println(amountOrder);  //结果为3
		System.out.println(amountOrder1); //结果为5
		
	}

}

字符串链接符+

  • 字符串在前,后面内容不参与运算直接拼接字符串
  • 字符串在后,前面计算完成后拼接字符串
class SpecialFocous{

    public static void main(String[] args){

    //关于字符串拼接原则  +

    int a = 5;
    int b = 4;

    System.out.println(" "+a+b);//54
    System.out.println(a+" "+b);//5 4
    System.out.println(a+b+" ");//9


    }


}

 

关系运算符代码

  • 程序中应尽量避免浮点数的比较,例如System.out.println(2.00-1.10==0.90),永远返回false.
  • float、double类型的运算往往都不准确

正确的方式

  • 利用整数来表示小数int或者long,例如1.01元,则可以以分为单位来表示。
  • 利用BigDecimal进行浮点型运算,但是注意一定要使用String类型的构造方法,如果使用浮点型构造方法也不能得到准确的结果。
class Operator{

    public static void main(String[] args){

    //运算得出的结果非true即false

    int a = 20;
    int b = 10;

    System.out.println(a>b);   //true
    System.out.println(a<b);   //false
    System.out.println(a==b);  //false
    System.out.println(a!=b);  //true

    }

}

逻辑运算符

  • 与(and)或(or)非(取反)的表示
class LogicOperator {

	public static void main(String[] args) {
		boolean a = true;
		boolean b = false;
		//  &&与运算 有false则false,无false为true
		System.out.println("a&&b结果为"+(a&&b));    //false
		//  ||有true则true,无true则false
		System.out.println("a||b结果为"+(a||b));          //true
		//结果取反
		System.out.println("!a&&b结果为"+!(a&&b));  //true
		
		//短路运算,即前面为false程序直接停止执行
		int c = 5;
		boolean d =(c<3)&&(c++<3);
		System.out.println(d);//结果为false
		System.out.println(c);//结果为5,因为短路后面不进行操作,故c的值没有发生变化
		

	}

}

位运算符

  • 位运算能够提升计算机运算的速度

 

class ShiftOperator {

	public static void main(String[] args) {
		/*
		计算机内部识别表现形式为补码
		 A =  0011 1100     32+16+8+4=60
		 B =  0010 0101     32+4+1=37
		 -------------------------------
		 正数的原反补相同
		 A&B  0010 0100    32+4=36
		 A|B  0011  1101    32+16+8+4+1=61
		 A^B  0001 1001   16+8+1=25
		 负数的原反补遵循相应的原则
		 ~B   1101  1010    -(64+16+8+2)=-90很多同学会在这里疑惑
		 反码 1101  1001
		 源码 1010 0 110   -(32+4+2) = -38
		 */
		int A = 60;
		int B =37;
		System.out.println( A&B);  //36
		System.out.println(  A|B);   //61
		System.out.println( A^B);    //25
		System.out.println( ~B);       //-38
		
	}

}

面试题

2*8怎么运算最快?

用位运算的方式即可,如果采用直接运算,底层逻辑较为复杂,而采用位运算只需要由开关灯来决定。2*8=2*2*2*2

class TestOperator{

    public static void main(String[] args){

    /*
     2*8=2*2*2*2

    <<   右移原数字变大,移几位就乘以2的几次方
    >>   左移原数字变小,移几位就除以2的几次方


    */

    System.out.println(2<<3);   //结果为16


 }


}

拓展运算符

+=,-=,*=,/=

class LazyOperator{

    public static void main(String[] args){

    //  +=,-=,*=

    int price = 10;
    int count = 20;
    price*=count;    //price = price*count

    System.out.println(price);   //输出结果为200

    }

}

三目运算符

格式: (关系表达式)?y:z

关系表达式的值非true即false,true输出y,false输出z

class ThreeEyes{

    public static void main(String[] args){

    int zhangAge = 60;
    int mingAge = 30;
    String relationship;

    relationship = (zhangAge<mingAge)?"ming是哥哥":"ming是弟弟";

    System.out.println(relationship);

    }

}

作业:运算符的优先级测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值