整理Java编程中常用的基本描述符与运算符

描述符
描述符是你添加到那些定义中来改变他们的意思的关键词。Java 语言有很多描述符,包括以下这些:

  • 可访问描述符
  • 不可访问描述符
  • 应用描述符,你可以在类、方法、变量中加入相应关键字。描述符要先于声明,如下面的例子所示(斜体):
public class className {
 // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
 // body of method
}

可访问描述符
Java 提供一系列可访问描述符来设定类,变量,方法和构造器的访问级别。四种访问级别如下:

默认的,对封装可见。不需要描述符。

  • 仅对类可见(private)
  • 全部可见(public)
  • 对封装和子类可见(protected)

不可访问描述符

Java 提供一些不可访问描述符来满足其他功能。

  • Static 描述符是用来创造类方法和变量的。
  • Final 描述符用来最终确定和实施类、方法和变量的。
  • Abstract 描述符用来创造不允许实例化的类和方法。
  • synchronized 和 volatile 描述符用来当做线的。

基本运算符
Java 针对操控变量提供了一组丰富的运算符。我们可以将所有的 Java 运算符分为如下几组:

  • 算数运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符
  • 算数运算符

算术运算符在数学表达中的使用和它们在代数中的使用是相同的。下面的表格列举了算数运算符:

假设整体变量 A 有 10 个,变量 B 有 20 个,那么:

示例

运算符 描述 例子
+ 加法 C 在运算符的另一端增加 A+B 为 30
- 减法 C 将右侧的操作数从左侧的操作数中减去 A - B 为-10
* 乘法 C 将运算符两端的值相乘 A * B 为200
/ 除法 C 用右侧操作数除左侧操作数 B / A 为2
% 系数 - 用右侧操作数除左侧操作数并返回馀数 B % A 为0
++ 增量 C 给操作数的值增加1 B++ 为21
-- 减量 C 给操作数的值减去1 B―为19

关系运算符
以下是 Java 语言可支持的关系运算符。
假设变量 A 有 10,变量 B 有 20,那么:

示例

运算符 描述 例子
== 检查双方操作数的值是否相等,如果相等那么条件为真 (A == B) 不为真。
!= 检查双方操作数的值是否相等,如果不相等那么条件为真 (A != B) 为真。
> 检查左侧的操作数是否大于右侧的操作数,如果大于那么条件为真 (A > B) 不为真。
< 检查左侧的操作数是否小于右侧的操作数,如果小于那么条件为真 (A < B) 为真。
>= 检查左侧的操作数是够大于等于右侧的操作数,如果是那么条件为真 (A >= B) 不为真。
<= 检查左侧的操作数是否小于等于右侧的操作数,如果是那么条件为真 (A <= B) 为真。

位运算符
Java 定义了几种运算符,这类运算符可被运用于整数型式,long,int,short,字符型和字节型。

位运算符作用于二进制系统间传输标准,并执行按位操作。假设如果 a 等于 60;b 等于 13;现在在二进制型式下它们就如下所示:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011 

以下表格列举了位运算符:

假设整数变量 A 有 60 个,B 有 13 个那么:

示例

运算符 描述 例子
& 二进制AND运算符在结果上复制一位如果在双方操作数同时存在 (A & B) 为12,即 0000 1100
| 二进制OR运算符在结果上复制一位如果在任何一个操作数上存在 (A | B) 为61,即0011 1101
^ 二进制XOR 运算符复制位,如果它是设置在一个操作数上而不是两个。 (A ^ B) 为49, 即0011 0001
~ 二进制补充运算符是一元的,b并有“翻转”位的影响 (~A ) 为 -61,由于是带符号的二进制数,那2的补位形式为1100 0011
<< 二进制左移运算符。左侧操作数的值根据右侧操作数指定的位的数量移至左侧。 A << 2 为240 ,即1111 0000
>> 二进制右移运算符。左侧操作数的值根据右侧操作数指定的位的数量移至右侧。 A >> 2 为 15即1111
>>> 右移补零运算符。左侧操作数的值根据右侧操作数指定的位的数量移至右,并且转移的值用零补满。 A >>>2 为15 ,即0000 1111

逻辑运算符
下表格列举了逻辑运算符:

假设布尔数学体系变量 A 为真,B 为假,那么:

示例

运算符 描述 例子
&& 称为逻辑与运算符。如果双方操作数都不为零,那么条件为真。 (A && B) 为真.
|| 称为逻辑或运算符. 如果双方操作数其中的任何一个都不为零,那么条件为真。 (A || B) 为真.
! 称为逻辑非运算符. 用作翻转操作数的逻辑状态。如果一个条件为真,那么逻辑非运算符为假。 !(A && B) 为真.

赋值运算符
以下是由 Java 语言所支持的赋值运算符:

示例

运算符 描述 例子
= 简单及运算符,将右侧操作数的值赋给左侧操作数 C = A + B 会将 A + B 的值赋给 C
+= 增加及赋值运算符,它将右侧的操作数增加到左侧的操作数并且结果赋给左侧操作数 C += A 同等于 C = C + A
-= 减去及赋值运算符,它将右侧操作数从左侧操作数中减去并将结果赋给左侧操作数 C -= A 同等于C = C - A
*= 乘以及赋值运算符,它将右侧操作数与左侧相乘并将结果赋给左侧操作数 C = A 同等于 C = C A
/= 除以及赋值运算符,它将右侧操作数除左侧操作数并将结果赋给左侧操作数 C /= A 同等于 C = C / A
%= 系数及赋值运算符 需要系数运用两个操作数并且将结果赋给左侧操作数 C %= A is 同等于 C = C % A
<<= 左移和赋值运算符 C <<= 2 同等于C = C << 2
>>= 右移和赋值运算符 C >>= 2 同等于 C = C >> 2
&= 按位和赋值运算符 C &= 2 同等于C = C & 2
^= 按位异或及赋值运算符 C ^= 2 同等于 C = C ^ 2
|= 按位可兼或及赋值运算符 C |= 2 同等于C = C | 2

其它运算符
以下是由 Java 语言所支持的一些其他的运算符:

条件运算符(?:)

条件运算符同样也被称作为三元运算符。这种运算符由三个操作数组成,被用作评估布尔数学体系表达。这种运算符的目的是来决定哪些值应被赋予到变量上。这个运算符被写作如下:

variable x = (expression) ? value if true : value if false 

以下是示例:

public class Test {

 public static void main(String args[]){
  int a,b;
  a = 10;
  b = (a == 1) ? 20: 30;
  System.out.println( "Value of b is : " + b );

  b = (a == 10) ? 20: 30;
  System.out.println( "Value of b is : " + b );
 }
}

这样就会有如下结果:

Value of b is : 30
Value of b is : 20

Instanceof 符

这种操作符只用于对象引用变量。这种操作符检查对象是否是独特类型(类型或接口类型)。Instanceof 运算符写为:

( Object reference variable ) instanceof  (class/interface type)
如果在运算符左侧的由变量所指代的对象为右侧的类型或接口类型通过 IS-A 检查,那么结果为真。以下是示例:

public class Test {

 public static void main(String args[]){
  String name = "James";
  // following will return true since name is type of String
  boolean result = name instanceof String; 
  System.out.println( result );
 }
}

这就会产出如下结果:

复制代码 代码如下:
true

这种运算符仍会返回到真如果被比较的对象是与右边类型兼容的赋值。以下是另一个例子:
class Vehicle {}

public class Car extends Vehicle {
 public static void main(String args[]){
  Vehicle a = new Car();
  boolean result = a instanceof Car;
  System.out.println( result );
 }
}

这样将会产生以下的结果:

true

Java 运算符的优先级
运算符优先级决定一个表达式里术语的分组。它影响着一个表达式如何求值。一定的运算符比其他运算符拥有更高的优先级;例如:乘法运算符比加法运算符有更高的优先级:

例如,x=7+3 2; 这里x 被赋值为13,不是20,是因为运算符 比运算符+由更高的优先级, 所以它首先运算乘法 3*2,然后再加7。

这里,有着最高优先级的运算符在这个表格的最高一层,最低优先权的则出现在最底部。在一个表达式中,越高等级的优先权的运算符会最先被求值。

运算符 关联性
后缀 () [] . (dot operator) 从左到右
一元 ++ - - ! ~ 从右到左
乘法的 * / % 从左到右
加法的 + - 从左到右
移位 >> >>> << 从左到右
关系的 > >= < <= 从左到右
相等 == != 从左到右
位与 & 从左到右
位异或 ^ 从左到右
位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
有条件的 ?: 从右到左
赋值 = += -= *= /= %= >>= <<= &= ^== 从右到左
逗号 , 从左到右

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 连接 连接池产生原因 连接池实现原理 小结 TEMPERANCE:Eat not to dullness;drink not to elevation.节制
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。-- 毕玄 1. 命名风格 【书摘】类名用 UpperCamelC
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个人在用”。哪怕只是throw了一个新的Exception。哈哈,这是我犯的错误。一、接口和抽象类类,即一个对象。先抽象类,就是抽象出类的基础部分,即抽象基类(抽象类)。官方定义让人费解,但是记忆方法是也不错的 —包含抽象方法的类叫做抽象类。接口
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket一、引子文件,作为常见的数据源。关于操作文件的字节流就是 —FileInputStream&amp;FileOutputStream。
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节。交流QQ群:【编程之美 365234583】http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_Aonqz
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程与多线程 线程是什么? 线程(Thread)是一个对象(Object)。用来干什么?Java 线程(也称 JVM 线程)是 Java 进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。 Ja
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket在面向对象编程中,编程人员应该在意“资源”。比如?1String hello = &quot;hello&quot;; 在代码中,我们
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 《程序兵法:Java String 源码的排序算法(一)》 文章工程:* JDK 1.8* 工程名:algorithm-core-le
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 一、父子类变量名相同会咋样? 有个小故事,今天群里面有个人问下面如图输出什么? 我回答:60。但这是错的,答案结果是 40 。我知错能改,然后说了下父子类变
作者:泥瓦匠 出处:https://www.bysocket.com/2021-10-26/mac-create-files-from-the-root-directory.html Mac 操作系统挺适合开发者进行写代码,最近碰到了一个问题,问题是如何在 macOS 根目录创建文件夹。不同的 ma
作者:李强强上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。一、引子在Java世界里,99%的工作都是处理这高层。那么二进制,字节码这些会在哪里用到呢?自问自答:在跨平台的时候,就凸显神功了。比如说文件读写,数据通信,还
1 线程中断 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 方法,使得该线程中断标志位属性改变。 深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want需求 项目在设计表的时候,要处理并发多的一些数据,类似订单号不能重复,要保持唯一。原本以为来个时间戳,精确到毫秒应该不错了。后来觉得是错了,测试环境下很多一
纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 加微信:bysocket01
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want.文章Points:1、介绍RESTful架构风格2、Spring配置CXF3、三层初设计,实现WebService接口层4、撰写HTTPClient 客户
Writer :BYSocket(泥沙砖瓦浆木匠)什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过(逃哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。一、什么是回调回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百
Writer :BYSocket(泥沙砖瓦浆木匠)一、什么大小端?大小端在计算机业界,Endian表示数据在存储器中的存放顺序。百度百科如下叙述之:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加
What is a programming language? Before introducing compilation and decompilation, let&#39;s briefly introduce the Programming Language. Programming la
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket泥瓦匠喜欢Java,文章总是扯扯Java。 I/O 基础,就是二进制,也就是Bit。一、Bit与二进制什么是Bit(位)呢?位是CPU
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocket一、前言 泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标:专注很重要。专注Java 基础 + H5(学习) 其他操作系统,算法,数据结构当成课外书博览。有时候,就是那样你越是专注方面越