java运算符概述(二)——赋值运算符、逻辑运算符以及三元运算符

赋值运算符

        在java中,赋值运算符就是数学中的”=“号,在java编程中,它表示将右边的式子的值赋给左边的用标志符表示的空间。简单来说就是将右边式子的值写进用标志符表示的存储空间之中。赋值运算符可以和简单算数运算符进行扩展形成扩展赋值运算符。扩展赋值运算符包括+=、-=、*=、/=、%=五种。扩展运算符能够省略强制类型转化的操作,这个怎么理解呢,以下用一个例子来说明。

        首先要明白,i += b;和int i = i +b;是等价的,于是我们编写程序,进行扩展赋值运算。

public class Demo1 {
    public static void main(String[] args){
      int i = 1;
     double b = 1.5;
      i+= b;
        System.out.println(b);
    }
}

        在上面的这个程序中,需要注意两点,第一,对于 i和b程序明确规定了它们的数组类型,i为整形,b为双精度浮点型,而代码i += b却没有强调计算结果的数据类型为整形。第二,如何确定扩展赋值运算结果的数据类型呢?其实,扩展赋值运算结果的数据类型与扩展赋值运算之前扩展赋值符左边的数据保持一直,也就是说,i += b 的运算结果的数据类型与未进行扩展赋值运算值之前的i的数据类型一样。比如,将上面个两个变量的位置交换,那么程序运行的结果应该是双精度浮点型,如下所示:

public class Demo {
    public static void main(String[] args){
      int i = 1;
     double b = 1.5;
      b += i ;
        System.out.println(b);
    }
}

        也正应为如此,所以在写代码时,扩展赋值运算的左边无需再次强调数据类型,也就省去了强制类型转化的操作。

逻辑运算符

        在java中,逻辑运算符主要有与(&)、或(|)、非(!)、短路与(&&)、短路或(||)几种。与(&)需要两边的表达式均为true时输出才为true,短路与(&&)和与(&)的功能相同,或(|)只要两边的表达式中有一个为true输出便为true,短路或(||)和或(|)的功能相同,非(!)表示取反。

        以上几个逻辑运算符的功能其实很好理解,不好理解的是,既然已经有与(&)、或(|),为什么又要提出短路与(&&)、短路或(||)呢?其实,短路与(&&)、短路或(||)相对于与(&)、或(|)来说,运算效率更高呢,那么效率又为什么会更高呢?以下我们举一个例子来进行说明。

        给出两个值2和0,将2赋给a,0赋给b。很明显a<b不成立,所以进行逻辑运算a<b&(任一命题)时,根据与(&)的运算规则,无论右边的任何命题是否为true,都不需要进行判断。而在java中,进行与(&)运算时,即使前面判断为false,依然会运行后面的语句。比如以下的程序中,右边写成2/0<0,程序会报错,提示2/0不符合数学运算规则,而当把与(&)运算换成短路与(&&)运算时,程序会照常运行,很明显,短路与(&&)并没有执行后面2/0<0的程序,而是将其直接跳过了。短路与(&&)执行的代码更少,在同样的系统下,它的效率自然更高。

public class Demo01 {
    public static void main(String[] args) {
        int a = 2;
        int b = 0;
        boolean c =(a<0&2/0<0);
        System.out.println(c);
    }
}

 

public class Demo01 {
    public static void main(String[] args) {
        int a = 2;
        int b = 0;
        boolean c =(a<0&&2/0<0);
        System.out.println(c);
    }
}

 三元运算符

          三元运算符又叫条件运算符,它的基本格式为x?y:z;,为了方便理解,可以将其转换为中文格式,写成:

                (关系表达式)?表达式1:表达式2;

这样,它的执行流程也能用中文来表述,表述结果为:

                关系表达式为ture,三元运算符结果为表达式1,关系表达式为false,三元运算符结果为表达式2。

        这里编写一个程序来演示三元运算符的使用。

public class Demo01 {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        String s=1<0?"我不爱你":"我爱你";
        System.out.println(s);
    }
}

        虽然三元运算符的流程很好理解,但在使用中尤其容易出错,首先要注意的就是必须定义一个数据类型来接收三元运算的结果,比如上面的程序中 String s=1<0?"我不爱你":"我爱你";一行,其次,尤其注意在使用汉字字符串的时候,由于要频繁切换输入法,极有可能导致输入引号或者冒号时输入法为中文,这样导致的程序错误极难察觉,编写程序时要特别留意。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值