zoukankan      html  css  js  c++  java
  • java学习之运算符

    学习完了变量+常量,现在只能简单的声明变量+赋值+打印变量。

    但是程序要做的就是去处理数据,把原本散乱的数据,处理成有意义的数据,供我们来使用,这就涉及到了运算符的应用。

    算数运算符常用的种类:

    加法:+

    减法:-

    乘法:*

    除法:/

    取余:%

    自增运算符:++

    自减运算符:  --

    字符连接符:“+”(不同于数字之间的加法运算)

    特别说一下除法,代码如下:

    class Trans{
    	
    	public static void main(String[] args) {
    
    		int a = 6758;
    
    		a = 6758/1000*1000;
    
    		System.out.print(a);
    
    	}
    
    }
    

    在a = 6785/1000,这个赋值当中,隐式的把(6785/1000)转换成了int型6所以得出了a=6000这个结果。

    取余运算的时候eg:int a = 2,b=3; a%b = 2;[ 如果a小于b则余数始终都是a ]

    温馨提示:当操作两个不同类型的变量时,很容易造成精度丢失,导致编译失败。除了int型和double这两种默认的类型除外。

    比较运算符:

    >      大于运算符

    >=     大于等于运算符

    <      小于运算符

    <=       小于等于运算符

    !=      不等于运算符

    ==     等于运算符

    ===     恒等于运算符

    instanceof    是否为某一类的实例

    逻辑运算符:

    与运算:&  只有当&运算符两侧均为真时结果才为真。在java语言当中3<a<6这种表达式是不成立的。因为3<a此时返回的是一个布尔值,布尔值是没办法跟整数比较的,于是这种方式是不成立的。

    或运算:| 当|两侧有一个为真时结果就为真

    非运算:!  当操作数为真时结果为假,当操作数为假时结果为真

    ^ 异或运算符:只有当两个值不一样时,结果才为真。

    && 与短路运算符:当第一个值为真时,第二个值才需要计算。但是当第一个值为假时,第二值不许再去计算。

    || 或短路运算符:同上。

     位运算符:

    <<:左移运算符,即把二进制位向左移动两位,不足的补零。将一个数向左移动N位,相当于拿该数跟2的N次幂做乘法运算。

    >>:右移运算符,即把二进制为向右移动两位,高位原来是零的补零,是一的补一;将一个数向左移动N位,相当于拿该数跟2的N次幂做除法运算。

    >>>:无符号右移运算符,即把二进制为向右移动两位,无论高位是零还是一,一律补零;

    &:与位运算符(!!!跟逻辑运算符中的&是不同的),二进制位只有当运算数都是1时才会是1,其他的都是0;

    |:或位运算符(!!!跟逻辑运算符中的&是不同的),二进制位当中只要有一个是1,则结果就为1,只有当两个操作数都是0的时候,结果才会是0;

    ~:取位反运算符,把0变1,然后1变0;

    ^:异或位运算符:只有当两个位的数字一样时,结果才为1,其他的为0;

    位运算符的应用:

    1、加密:异或位运算的特点在于,一个数a异或另一个数b:即a^b = c;此时c^b得到的结果就是c^b = a;即:a^b^b = a;也就是一个数异或两次数,得到的最终结果就是他本身。

    那么现在有一个需要加密的二进制字符串a,此时我们设置一个密码b;则a^b = c.此时c就是加密后的文本,而b就是密码。如果我们想要得到a,此时就可以利用异或的特点,c^b = a;这样就完成了一个简单的加解密运算。

    2、有效率的在不运用第三方变量的情况下互换两个数字:

    int a = 10,b = 20;
    a = a^b;
    b = a^b;//即a^b^b = a;
    a = a^b;//即b^a^a = b;
    /**
    这样就非常高效的完成了两个数的交换;
    */
    

    3、高效的完成乘法运算:

    int a = 3;
    int b = 8;
    int c;
    //求a*b的值c;
    c = 3 <<3;//一个数与一个2的倍数做乘法运算的时候,可以看作a<<log以2为底b的对数

     三元运算符:

      按照被操作数的个数,可以将运算符分为

        1、一元运算符:即只有一个操作数。比如~ 取反运算符,+正运算符,-负运算符,!非运算符;

        2、二元运算符:即有两个操作数:比如 加(+)减(-)乘(*)除(/)与(&)....等等。

        3、三元运算符:即有三个操作数,唯一一种表现方式是(条件表达式)?语句一:语句二;如果条件表达式返回的结果为真,那么将执行语句一、否则执行语句二;

          

    int a = 3;
    int b = 4;
    int max;//得到两个数中较大的一个数
    
    max = (a>b)?a:b//其中需要注意的是括号内必须返回一个真或者是假,其他的都是非法的
    

    总结:运算符运算完之后肯定是要返回一个数,如果运算符运算之后,没有返回任何有用的变量或者常量,那么这就失去了运算符的意义了。

    三元运算符和if....else....结构的区别:

    三元运算符和if...else...结构虽然在用起来思路是一样的,但是最重要的一点区别就是,三元运算符,必须返回一个值,这个就是运算符的特点。是运算符,就必须返回值。

  • 相关阅读:
    python服务注册到nacos
    springboot设置响应状态码
    nio 实现群聊小系统
    记一次maven问题(把maven仓库打包后在离线环境另一个机器导入不成功)
    客户端查看sql的执行时间
    java 运行python脚本
    http访问支持websocket
    ”真实项目“ 与“作业”
    工厂方法模式
    idea 开发 SSM jar包找不到
  • 原文地址:https://www.cnblogs.com/sunchuanzhen/p/3308196.html
Copyright © 2011-2022 走看看