java基础-操作符
浏览以下内容前,请点击并阅读 声明
定义:操作符是一种能够对一个,两个或三个操作对象执行特定的操作,并返回一个结果的特定符号。
java中操作符的种类和优先级如下表所示,除了赋值运算,所有二元操作符运算顺序都是由左到右,优先级顺序由上往下依次降低:
操作符 | 优先级 |
---|---|
后缀 | expr++ expr-- |
一元运算 | ++expr --expr +expr -expr ~ ! |
乘除 | * / % |
加减 | + - |
位移 | << >> >>> |
大小关系的 | < > <= >= instanceof |
等同性 | == != |
按位与 | & |
按位非 | ^ |
按位或 | | |
逻辑与 | && |
逻辑或 | || |
三元运算 | ? : |
赋值 | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
以下对各个操作符逐一说明:
赋值操作符
赋值操作符“=”是java中使用最多的操作符,很简单,它的作用就是将右侧的值赋值给左侧的操作对象。
还有一类赋值操作符,就是将算数操作符,位移操作符,位操作符与等号组合使用,包括+=, -=, *=, /= ,%= ,&=, ^=, |= ,<<= ,>>= ,>>>=他们的使用能简化代码。如
a+=1;
//等同于
a=a+1;
算数操作符
算数操作符包括加,减,乘,除以及取余,如下表所示:
操作符 | 描述 |
---|---|
+ |
加操作符 (也可用于字符串的连接操作) |
- |
减操作符 |
* |
乘操作符 |
/ |
除操作符 |
% |
取余操作符 |
一元操作符
一元操作符只需要一个操作对象,包括如下操作符:
操作符 | 描述 |
---|---|
+ |
一元加操作符; 表明该数字位正数 (然而数字前没有符号也是正数) |
- |
一元减操作符; 使一个表达式变为负 |
++ |
增加操作符; 加1 |
-- |
减操作符; 减 1 |
! |
逻辑操作符; 非 |
增加操作符可用于操作对象之前(前缀)也可用与操作对象之后(后缀),代码
int result=1;
//输出为1
System.out.println(result++);
//result已经增加1 ,输出为2
System.out.println(result); //--分割线 int result =1;
//输出为2
System.out.println(++result);
//result已经增加1 ,输出为2
System.out.println(result);
都会使得变量result增加1,唯一不同的是取值,前者(result++)取值为result 而后者(++result)取值为result+1。
相等与大小关系操作符
相等与大小关系操作符比较简单,要注意的是,判断是否相等,需要使用“==”而不是“=”,“=”是赋值操作符,整个表达式可以返回true或者false。
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
条件操作符(逻辑判断)
条件操作符的操作对象是两个布尔表达式,需要注意的是,他们有“短路”特性,即只有在必要时,才会对第二个表达式进行判断。
&& 条件与
|| 条件或
另外一个条件操作符是 ?:,它是一个三元操作符,作用相当于 if-then-else语句,用法如下所示:
boolean someCondition = true;
//如果someCondition位true 则将value1赋值给result 否则将value2赋值给result
result = someCondition ? value1 : value2;
位级与位移操作符
位操作符的一般的使用比较少,但是要知道他们是存在的。
~ ,一元操作符,用于将操作对象反置,即将数字中所有的0变为1,把所有的1变为0。
>>,带符号,将一个位数字向右移动若干位,移动的位数由右侧的操作对象决定。
<<,带符号,将一个位数字向左移动若干位,移动的位数由右侧的操作对象决定。
>>>,不带符号,将一个位数字向右移动若干位,移动的位数由右侧的操作对象决定。
&
,按位与
^
,按位或非
|
,按位或
关于位移的使用,请参考:Java的位移操作
instanceof操作符
instanceof操作符用于判断左侧操作对象是否为右侧操作对象的实例,即如果左侧对象的类继承右侧的类,或者实现右侧的接口,则返回true:
//假设各个类的关系如下
//class Child extends Parent implements MyInterface {}
//interface MyInterface {}
//则有:
class InstanceofDemo {
public static void main(String[] args) { Parent obj1 = new Parent();
Parent obj2 = new Child(); System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
上述代码输出为:
obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true
java基础-操作符的更多相关文章
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础应用
Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- 经典的Java基础面试题集锦
经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...
- JAVA面试精选【Java基础第一部分】
这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童 ...
- Java 基础之认识 Annotation
Java 基础之认识 Annotation 从 JDK 1.5 版本开始,Java 语言提供了通用的 Annotation 功能,允许开发者定义和使用自己的 Annotation 类型.Annotat ...
随机推荐
- solrconfig.xml和schema.xml说明
1. solrconfig.xml solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置. 1.1. datadir节点 ...
- jpg Test
- iOS - 富文本AttributedString
最近项目中用到了图文混排,所以就研究了一下iOS中的富文本,打算把研究的结果分享一下,也是对自己学习的一个总结. 在iOS中或者Mac OS X中怎样才能将一个字符串绘制到屏幕上呢? ...
- android中一个解决办法
E Trace(732): error opening trace file: No such file or directory (2)android api 的版本和模拟器的版本不一致导致的
- history 清空历史记录 或 history不记录历史命令
# vi ~/.bash_history 清空里面的记录,并退出当前shell # exit(一定要退出当前shell) # history 1 vi ~/.bash_history 2 histor ...
- Overview and Evaluation of Bluetooth Low Energy: An Emerging Low-Power Wireless Technology
转自:http://www.mdpi.com/1424-8220/12/9/11734/htm Sensors 2012, 12(9), 11734-11753; doi:10.3390/s12091 ...
- Log4Net配置以及使用
跟踪程序代码,及时发现程序的运行状态,是每个成熟的软件所必不可少的一个环节,网站发布到真实的环境之后,对于程序的运行状态,我们并不能想开发环境那也,点击调试.日志记录显示就尤为重要,在.NET中记录日 ...
- hdu 3695:Computer Virus on Planet Pandora(AC自动机,入门题)
Computer Virus on Planet Pandora Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 256000/1280 ...
- HDU5115 Dire Wolf(区间DP)
渐渐认识到区域赛更侧重的是思维及基本算法的灵活运用,而不是算法的量(仅个人见解),接下来要更多侧重思维训练了. 区间DP,dp[i][j]表示从i到j最终剩余第i 与第j只的最小伤害值,设置0与n+1 ...
- C# 令某个窗体可跟着鼠标移动
/// <summary> /// 使窗口的中的指定控件支持运行时移动 /// TODO:运行时缩放 /// </summary> public class ControlMo ...