整理Java编程中常用的基本描述符与运算符
作者:goldensun 发布时间:2022-05-30 01:36:32
描述符
描述符是你添加到那些定义中来改变他们的意思的关键词。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 个,那么:
示例
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法 – 在运算符的另一端增加 | A+B 为 30 |
- | 减法 – 将右侧的操作数从左侧的操作数中减去 | A - B 为-10 |
* | 乘法 – 将运算符两端的值相乘 | A * B 为200 |
/ | 除法 – 用右侧操作数除左侧操作数 | B / A 为2 |
% | 系数 - 用右侧操作数除左侧操作数并返回馀数 | B % A 为0 |
++ | 增量 – 给操作数的值增加1 | B++ 为21 |
-- | 减量 – 给操作数的值减去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) | 从左到右 |
一元 | ++ - - ! ~ | 从右到左 |
乘法的 | * / % | 从左到右 |
加法的 | + - | 从左到右 |
移位 | >> >>> << | 从左到右 |
关系的 | > >= < <= | 从左到右 |
相等 | == != | 从左到右 |
位与 | & | 从左到右 |
位异或 | ^ | 从左到右 |
位或 | | | 从左到右 |
逻辑与 | && | 从左到右 |
逻辑或 | || | 从左到右 |
有条件的 | ?: | 从右到左 |
赋值 | = += -= *= /= %= >>= <<= &= ^== | 从右到左 |
逗号 | , | 从左到右 |


猜你喜欢
- 前言翻看了下以前大学学习的一些小项目,突然发现有个项目比较有意思,觉得有必要把它分享出来。当然现在看来,里面有很多的不足之处,但因博主现在已
- 1 数据响应  数据响应一般分为两种:页面响应和数据响应,一般来说页面响应是用来开发一些单体项目(也就是
- 第一步:添加新项目第二步:添加新的页签,注意,此页签是显示到Outlook主界面的第三步:添加自己想要的文本框以及按钮第四步:如果你想将此界
- 符号 ASCII码 &
- 前言请看下面几个问题Spring为什么不推荐使用@Autowired 注解?为什么推荐使用@Resource 代替&nb
- Spring p和c标签注入方式1.编写实体类package com.ming04.pojo;import lombok.AllArgsCo
- using System;using System.Collections.Generic;using System.Linq; using
- 一、代理的概念 * 技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会 * 技术,那么在学习Spring这些框架
- EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。ehcach
- RestAPI中, 经常需要操作json字符串, 需要把json字符串"反序列化"成一个对象, 也需要把一个
- 案例需求:访问带有验证码的登录页面login.jsp用户输入用户名,密码以及验证码。如果用户名和密码输入有误,跳转登录页面,提示:用户名或密
- RecyclerView 已经出来很久了,但是在项目中之前都使用的是ListView,最近新的项目上了都大量的使用了RecycleView.
- 操作流程假设你已经有自己的域名,因为微信公众号和微信回调都需要域名先看看官方给的文档根据官方文档,主要流程如下:(1)引导用户进入授权页面同
- 左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。简单的只需要几行就可以了,下面那个类是封装好了的。packag
- 安装nodejs首先电脑中需要安装nodejs,这个就不多提了,windows就是下载node.exe,一步步安装就可以了。如需安装可参考一
- Spring是一个非常流行的Java Web开发框架,它提供了强大的依赖注入、面向切面编程、声明式事务管理等功能,为开发者提供了高效、快速地
- Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅
- LBS(Location Based Services)直译的话就是基于地理位置的服务,这里面至少有两层意思,第一要能轻易的获取当前的地理位
- 今天闲来无事写了一个清内存的小东西,类似360,在桌面上悬浮,点击后清除后台无用程序,清除后台程序是通过调用ActivityManger.k
- 我们很容易能想到,可以用递归来实现汉诺塔游戏。因为要将n(n>1)个盘子从“源”柱子移到“目标”柱子,我们要先把n-1个盘子从“源”柱