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 ...
随机推荐
- 如何用Endnote导入你要用的格式
在Google搜索某一个期刊名 ens格式的文件,下载,然后放入endnote的文件夹中(C:\Program Files (x86)\EndNote X7\Styles) 然后将其导入即可
- ld: framework not found AGCommon 关于三方库到入 问题解决方案!!
ld: framework not found AGCommon clang:error:linker command failed with exit code 1 (use -v to see ...
- Android缓存学习入门
本文主要包括以下内容 利用LruCache实现内存缓存 利用DiskLruCache实现磁盘缓存 LruCache与DiskLruCache结合实例 利用了缓存机制的瀑布流实例 内存缓存的实现 pub ...
- Maven构建Hadoop Maven构建Hadoop工程
一.安装maven linux eclipse3.6.1 maven安装 二:官网依赖库 我们可以直接去官网查找我们需要的依赖包的配置pom,然后加到项目中. 官网地址:http://mvnrepos ...
- Paragon NTFS for Mac® Yosemite - 免费下载
文章链接:http://www.paragon-software.com/cn/home/ntfs-mac-yosemite/registration.html
- java07课堂作业
一.动手动脑:多层的异常捕获-1 阅读以下代码(CatchWho.java),写出程序运行结果: public class CatchWho { public static void main(Str ...
- Recovery和Charger模式下屏幕旋转180度
转自:http://www.etwiki.cn/android/1267.html 如何让Recovery (系统固件升级),charger(关机充电动画)时屏幕旋转180度 解决方法: 1.在boo ...
- python threading编程中的LOCK和RLOCK(可重入锁)
找到一本PYTHON并发编辑的书, 弄弄.. #!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time sh ...
- SSIS Dataflow使用存储过程不能检索列名
在项目中遇到一个问题,需要在Dataflow中调用一个存储过程,然后把结果生成一个csv文件. 然而在dataflow调用存储过程中遇到了问题,SP不能正确的返回列名. 在SSMT里面明明是可以查出数 ...
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:公众号后台系统和数据都基本准备妥当了,可以来分享下我是如何开发本微信公众号的后台系统了 ...