[Java 基础]运算符和表达式
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:
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 = 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 型。
十六进制数适用于所有整数数据类型,以前缀为 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操作符
运算符的优先级和结合性
当多个运算符出现在同一个表达式中,会存在一个问题:谁先谁后呢?
这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
|
类别 |
操作符 |
关联性 |
|
后缀 |
() [] . (点操作符) |
左到右 |
|
一元 |
+ + - !〜 |
从右到左 |
|
乘性 |
* /% |
左到右 |
|
加性 |
+ - |
左到右 |
|
移位 |
>> >>> << |
左到右 |
|
关系 |
>> = << = |
左到右 |
|
相等 |
== != |
左到右 |
|
按位与 |
& |
左到右 |
|
按位异或 |
^ |
左到右 |
|
按位或 |
| |
左到右 |
|
逻辑与 |
&& |
左到右 |
|
逻辑或 |
| | |
左到右 |
|
条件 |
?: |
从右到左 |
|
赋值 |
= + = - = * = / =%= >> = |
从右到左 |
|
逗号 |
, |
左到右 |
表达式
所谓表达式,是指由常量、变量或是操作数与运算符所组合而成的语句。
例
如下是一个简单的算术表达式语句
x = 2 + 3;
参考资料
Java编程思想
http://www.w3cschool.cc/java/java-operators.html
[Java 基础]运算符和表达式的更多相关文章
- JAVA基础——运算符和表达式
JAVA语言常用的运算符和表达式详解 一.简述 运算符是一种"功能"符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个&q ...
- [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式
[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...
- Java基础-运算符(03)
概念: 运算符:就是对于常量和变量进行操作的符号. 表达式:用运算符连接起来的符合java语法的式子,不同的运算符连接的表达式是不同类型的表达式. 运算符分类: 算数运算符(+ - * / % ...
- Java基础—运算符(转载)
转载自:Java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运 ...
- 菜鸡的Java笔记 第四 - java 基础运算符
数学运算符,逻辑运算,三目运算,位运算 double d2 = 314e2; //采用科学计数法的写法,表示10的2次方.= 31400.0 代码写的越简单越好 简化运算符 代码:x=x+y 可以 ...
- Java基础——运算符
一.赋值运算符 在前面的学习中,用到最多的是什么呢?就是“=” .例如:int money=1000; //储存本金 使用“=”将数值1000放入变量money的存储空间中.“=”称为赋值运算符. ...
- java的运算符和表达式
)1.算数运算符:java中常用的算术运算符除了 +.-.*./之外,还有%(取余).++(自增).--(自减). )1.1%(取余):可适用于整数,char,浮点数的取余中.在取余中,如果进行运算的 ...
- java基础 运算符
算数运算符 加号:在操作数值.字符.字符串时其结果是不同的,当两个字符相加得到的是ASCII码表值, 当两个字符串相加时表示将两个字符串连接在一起,从而组成新的字符串. 除号:整数在使用除号操作时,得 ...
- java中运算符与表达式
运算符是用来完成一个动作的特定语言的语法记号. –赋值运算符 –增减运算符 –算术运算符 –关系运算符 –逻辑运算符 -位运算符 运算符 Java 加 + 减 - 乘 * 除 / 取模 % 1.整数运 ...
随机推荐
- ZabbixCPU温度监视-Centos
ZabbixCPU温度监视 1, lm_sensors安装 #yum install lm_sensors … #sensors-detect 出来的选项全部选yes 重启服务器 2, lm_sens ...
- 关于 REST
REST(Representational State Transfer)是一种轻量级的 Web Service 架构风格,可以翻译成“表述性状态转移”,实现和操作明显比 SOAP 和 XML-RPC ...
- 【T-SQL基础】02.联接查询
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
- 自定义路径创建Cocos2d-x项目
自定义路径创建Cocos2d-x项目 本文介绍windows下面如何优雅的创建Cocos2d-x项目.为何称之为优雅,是因为现在网上流传的一些创建方法有一些问题.大致内容如下: l 使用VS向导创建 ...
- 翻译-使用Spring WebService生成SOAP Web Service
原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...
- 泛型实现中没有正确lock引用类型的一个隐藏bug分析
最近看到这篇文章dotNetDR_的回复,让我想起一个真实发生的案例,下面就简单说说这个关于lock引用类型的一个不容易发现的隐藏缺陷. 某类库中的代码,封装了很简单的一个通用类,用于线程安全地执行某 ...
- swift NSComparator
var cmptr:NSComparator = {(obj1:AnyObject!, obj2:AnyObject!) -> NSComparisonResult in if((obj1[&q ...
- Java连接Oracle数据库开发银行管理系统【三、实现篇】
说明:里面的主要代码都加的有注释部分,所以代码显得很长,如果有错误的地方,谢谢指出. 注意需要导入数据库jar包 ------------------------------------------- ...
- [Java面试一]面试复习大纲.
一.Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2.面向对象的理解 3.集合相关的问题,比如hashmap跟hashtable的区别 ...
- Atitit 图像处理底色变红的解决
Atitit 图像处理底色变红的解决 1.1. 原因 ImageIO bug ,alpha通道应该在保存jpg的时候排除1 1.2. 解决,自己移除alpha通道即可1 2. Image sav ...