Java运算符

(1)赋值操作符

赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值)。

右值可以是任意的常量、变量或表达式(只要可以生成一个值)。

左值必须是一个明确的、已命名的变量。

public class Test {

    public static void main(String[] args) {

        int num = 10;

        System.out.println("num = " + num);

        num = 20;

        System.out.println("num = " + num);

    }

}

(2)算术操作符

加号(+)减号(-)乘号(*)除号(/)取模(%)

与C/C++一样,JAVA也支持同时进行运算和赋值操作符的简化写法。

以下两种写法是等价的:

num = num + 20;    //num加20,然后赋值给num

num += 20;         //num加20,然后赋值给num 

(3)一元操作符

一元加号(+)一元减号(-)表示数值的正负。
int x = -10;    //把负数-10赋值给x

int y = +10;    //把正数10赋值给y,一般+省略

System.out.println("x = " + x);

System.out.println("y = " + y);

(4)自增与自减操作符

自增操作符是++

自减操作符是--

例:++a 等价于 a = a+1;

自增和自减操作都可以分为前缀式和后缀式。

以自增为例,

int x = 1;

int y = 1;

System.out.println("x = " + ++x);    //前缀式

System.out.println("y = " + y++);    //后缀式

Output:

x = 2
y = 1

由此可见,前缀式是先递增,然后再代入表达式;而后缀式是先代入表达式,再对自身进行递增运算。

(5)关系操作符

关系操作符生成的是一个 boolean 结果,它们计算的是操作数的值之间的关系。

如果关系是真的,关系表达式的结果为 true;反之,结果为 false

关系操作符包括小于(<)大于(>)小于或等于(<=)大于或等于(>=)等于(==)以及不等于(!=)

(6)逻辑操作符

逻辑操作符包括与(&&)或(||)非(!),它们根据参数的逻辑关系,生成一个boolean值。

(7)括号操作符

括号操作符(),可以提高括号中表达式的执行优先级。

int result1 = 1 + 2 + 3 * 4 - 5;

int result2 = (1 + 2 + 3) * 4 - 5;

System.out.println("1 + 2 + 3 * 4 - 5 = " + result1);

System.out.println("(1 + 2 + 3) * 4 - 5 = " + result2);

Output:

1 + 2 + 3 * 4 - 5 = 10
(1 + 2 + 3) * 4 - 5 = 19

(8)位操作符

按位与(&)按位或(|)异或(^)取反(~)左移(<<)右移(>>)无符号右移(>>>)

(9)三元操作符

三元操作符比较特殊,它有三个操作数。它的格式为:

(布尔表达式)? 值A : 值B

如果布尔表达式的值为true,则结果为值A;反之,结果为值B。

public static int GetMaxNum(int x, int y) {

    return (x >= y) ? x : y;

}

public static void main(String[] args) {

    int x = 5;

    int y = 20;

    System.out.println("The max of " + x + " and " + y + " is : " + GetMaxNum(x, y));

}

:Java中只有一个三元操作符。

(10)直接常量

一般说来,程序中使用了”直接常量“,编译器可以准确地知道要生成什么样的类型,但有时候却是模棱两可的。

直接常量后面的后缀字符可以标志它的类型。

若为大写(或小写)的 L ,表示 long 型。

若为大写(或小写)的 F ,表示 float 型。

若为大写(或小写)的 D ,表示 double 型。

十六进制数适用于所有整数数据类型,以前缀为 0x(或0X),后面跟随0~9大小写的a~f

八进制数由前缀0以及后续的0~7的数字来表示。

public class Test{

    public static void main(String args[]){

        long l = 123L;      // long型:后缀为大写或小写的L

        float f = 12.3f;    // float型:后缀为大写或小写的F

        double d = 54.345d; // double型:后缀为大写或小写的D

        

        int x = 0xffffffff; // 十六进制数:前缀为0x,后续用0~9,a~f的数字来表示

        char c = 017;       // 八进制数:前缀为0,后续用0~7的数字来表示

    }

};

(11)不同于C/C++,在JAVA中没有sizeof操作符

运算符的优先级和结合性

当多个运算符出现在同一个表达式中,会存在一个问题:谁先谁后呢?

这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + - !〜

从右到左

乘性

* /%

左到右

加性

+ -

左到右

移位

>> >>>  <<

左到右

关系

>> = << =

左到右

相等

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / =%= >> =
<< =&= ^ = | =

从右到左

逗号

左到右

表达式

所谓表达式,是指由常量、变量或是操作数与运算符所组合而成的语句。

如下是一个简单的算术表达式语句

x = 2 + 3;

参考资料

Java编程思想

http://www.w3cschool.cc/java/java-operators.html

[Java 基础]运算符和表达式的更多相关文章

  1. JAVA基础——运算符和表达式

    JAVA语言常用的运算符和表达式详解 一.简述 运算符是一种"功能"符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个&q ...

  2. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  3. Java基础-运算符(03)

    概念: 运算符:就是对于常量和变量进行操作的符号. 表达式:用运算符连接起来的符合java语法的式子,不同的运算符连接的表达式是不同类型的表达式. 运算符分类: 算数运算符(+  -  *  /  % ...

  4. Java基础—运算符(转载)

    转载自:Java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运 ...

  5. 菜鸡的Java笔记 第四 - java 基础运算符

    数学运算符,逻辑运算,三目运算,位运算 double d2 = 314e2; //采用科学计数法的写法,表示10的2次方.= 31400.0 代码写的越简单越好   简化运算符 代码:x=x+y 可以 ...

  6. Java基础——运算符

    一.赋值运算符 在前面的学习中,用到最多的是什么呢?就是“=” .例如:int money=1000;   //储存本金 使用“=”将数值1000放入变量money的存储空间中.“=”称为赋值运算符. ...

  7. java的运算符和表达式

    )1.算数运算符:java中常用的算术运算符除了 +.-.*./之外,还有%(取余).++(自增).--(自减). )1.1%(取余):可适用于整数,char,浮点数的取余中.在取余中,如果进行运算的 ...

  8. java基础 运算符

    算数运算符 加号:在操作数值.字符.字符串时其结果是不同的,当两个字符相加得到的是ASCII码表值, 当两个字符串相加时表示将两个字符串连接在一起,从而组成新的字符串. 除号:整数在使用除号操作时,得 ...

  9. java中运算符与表达式

    运算符是用来完成一个动作的特定语言的语法记号. –赋值运算符 –增减运算符 –算术运算符 –关系运算符 –逻辑运算符 -位运算符 运算符 Java 加 + 减 - 乘 * 除 / 取模 % 1.整数运 ...

随机推荐

  1. Mroonga 3.0.8 发布,MySQL 存储引擎

    Mroonga 3.0.8 支持 REPAIR TABLE 支持损坏的 groonga 数据库. Mroonga 是一个 MySQL 存储引擎,基于 Groonga,提供完整的全文搜索引擎.

  2. Linux计划任务crontab运行脚本不正确的问题

    问题的由来 写好的程序希望在崩溃之后能够自启动,于是利用linux的crontab功能,添加一个计划任务,每分钟执行一个脚本查看需要监控的进程是否还在,如果不在则启动之,否则不做任何事情.这么一个简单 ...

  3. entityframework使用oracle的几个小问题

    问题一:Operation is not valid due to the current state of the object 生成的edmx文件有问题,解决方法参考链接 问题二:InvalidO ...

  4. 高性能网站架构设计之缓存篇(4)- Redis 主从复制

    Redis 的主从复制配置非常容易,但我们先来了解一下它的一些特性. redis 使用异步复制.从 redis 2.8 开始,slave 也会周期性的告诉 master 现在的数据量.可能只是个机制, ...

  5. HTML5之Canvas时钟(网页效果--每日一更)

    今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:亲,请点击这里 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由Java ...

  6. 介绍Oedis - Redis OH/RM

    作死造轮子 Oedis是近段时间为了解决日志型数据如何与Entity Framework的查询整合的问题写的一个Redis的OH /RM.虽然Redis出来蛮久了,各路高手也都提出了实践方案,但是或许 ...

  7. 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】

    加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...

  8. 《C#图解教程》读书笔记之一:C#和.NET框架

    本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.在.NET之前的编程世界 C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C# ...

  9. 目前在做的一个web应用程序的前端选型

    最近进入了一个新的项目组,要新起一个项目.这个Web项目是一个企业内部使用的系统,主要用来记录.追踪.管理潜在客户的数据.该系统有以下特点: 需要支持IE10及以上版本: 后端采用micro serv ...

  10. [HIMCM暑期班]第4课: 扑克牌问题

    假设跟你玩这样一个游戏: 拿一副52张牌的扑克,洗均匀.每次展示一张牌,如果是红心或者方块,你就赢10块钱:如果是黑桃或者草花,你就输10块钱.你可以选择在任何时候终止此游戏.问如何确保利益最大化? ...