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 ...
随机推荐
- Scanner和BufferedReader
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- nyoj1007(euler 函数)
euler(x)公式能计算小于等于x的并且和x互质的数的个数: 我们再看一下如何求小于等于n的和n互质的数的和, 我们用sum(n)表示: 若gcd(x, a)=1,则有gcd(x, x-a)=1: ...
- 设计模式学习之观察者模式(Observer,行为型模式)(7)
1.观察者模式又叫做发布-订阅模式. 2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 3 ...
- python中多线程与非线程的执行性能对比
此对比说明了一件事: 如果是IO型应用,多线程有优势, 如果是CPU计算型应用,多线程没必要,还有实现锁呢. #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- ora-01033:oracle initializationg or shutdown in progress 错误提示解决方法
1.进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID:2.运行sqlplus "/as sysdba" SQL>shutdown immedia ...
- 严重: End event threw exception java.lang.IllegalArgumentException: Can't convert argument: null
堆栈信息: 2014-6-17 10:33:58 org.apache.tomcat.util.digester.Digester endElement 严重: End event threw exc ...
- ASP.NET 5探险(7):使用混合型控制器方便实现单页应用
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,MVC和WEB API的技术栈合并了,所以开发混合型Con ...
- 全零网络IP地址0.0.0.0表示意义详谈
转自:http://liuzhigong.blog.163.com/blog/static/17827237520114207278610/ RFC: 0.0.0.0/8 - Addresses in ...
- JQuery.Ajax()的data参数类型
假如现在有这样一个表单,是添加元素用的. <form id='addForm' action='UserAdd.action' type='post'> <label for='un ...
- loj 1379(最短路变形)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27087 思路:题目的意思是求S->T的所有路径中花费总和小于 ...