整理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 个,那么:

示例

运算符 描述 例子
+ 加法 – 在运算符的另一端增加 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) 从左到右
一元 ++ - - ! ~ 从右到左
乘法的 * / % 从左到右
加法的 + - 从左到右
移位 >> >>> << 从左到右
关系的 > >= < <= 从左到右
相等 == != 从左到右
位与 & 从左到右
位异或 ^ 从左到右
位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
有条件的 ?: 从右到左
赋值 = += -= *= /= %= >>= <<= &= ^== 从右到左
逗号 , 从左到右
(0)

相关推荐

  • Java用三元运算符判断奇数和偶数的简单实现

    创建一个类,在该类的主方法中创建标准输入流的扫描器对象,提示用户输入一个整数,并通过扫描器的方法来接受这个整数,然后通过三元运算符判断该数字与2的余数,如果余数为0,说明其是偶数,否则是奇数. 复制代码 代码如下: import java.util.Scanner;public class ParityCheck {    public static void main(String[] args){        System.out.println("请输入一个整数:");    

  • java中关于移位运算符的demo与总结(推荐)

    首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0填充,多余位舍弃.(等同于乘2的n次方) >> 右移运算符,二进制数据向右移动*位,就在其二进制数据后抹掉几位?(这里还不错定,但个人理解是这样的)(等同于除2的n次方) >>> 无符号右移运算符,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充. 下面我们借一个

  • 浅谈Java变量赋值运算符及相关实例 原创

    Java程序中,需要进行大量的计算,所以要使用到运算符号,下面来给大家说明Java赋值运算符如何运用. 赋值运算符以符号"="表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方操作数.例如: int a = 100; 该表达式是将100赋值给变量 a .左方的操作数必须是一个变量 ,而右边的才做书则可以是任何表达式,包括变量(如 a .number).常量(123.'book').有效表达式(如55*66).         1:使用赋值运算符为变量赋

  • Java中的位运算符、移位运算详细介绍

    一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3)按位取反(~):0 变 1, 1变0: (4)按位异或(^):两位,如果相同,结果为0:如果不同,结果为1: 注意: (1)位运算中的 符号位(最高位)也跟着变; (2)位运算符与逻辑运算符(逻辑与&&.逻辑或||.逻辑非! )有点相似.但是,逻辑运算符只能操作boolean变量 (也就是左右两边的值

  • Java语言一元运算符实例解析

    一元运算符,也叫单项算符,一目运算符,一元算符 ,英文名字:UnaryOperator. 描述:接受一个参数为类型T,返回值类型也为T. 源码: public interface UnaryOperator<T> extends Function<T, T> { /** * Returns a unary operator that always returns its input argument. * * @param <T> the type of the inp

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

    描述符 描述符是你添加到那些定义中来改变他们的意思的关键词.Java 语言有很多描述符,包括以下这些: 可访问描述符 不可访问描述符 应用描述符,你可以在类.方法.变量中加入相应关键字.描述符要先于声明,如下面的例子所示(斜体): public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; p

  • 整理Java编程中字符串的常用操作方法

    字符 一般情况下,当我们处理字符时,我们用原始数据类型 char. 示例 char ch = 'a'; // Unicode for uppercase Greek omega character char uniChar = '\u039A'; // an array of chars char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; 然而在开发中,我们会遇到需要使用对象而不是原始数据类型的情况.为了达到这个需求.Java 为原始数据类型 char

  • 深入理解Java编程中异常处理的优劣

    Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念.我想对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:好,不好和恶劣三种.同时提供了一些解决这些问题的技巧.首先解释一些java异常处理中必须搞清楚的定义和机制.Java语言规范将自Error类或RuntimeException类衍生出来的任何违例都称作"不可检查&

  • 浅谈java web中常用对象对应的实例化接口

    1. request对象 是javax.servlet.HttpServletRequest接口的实例化 2. response对象 是javax.servlet.HttpServletResponse接口的实例化 3. session 对象 是javax.servlet.HttpSession接口的实例化 4. application对象 是javax.servlet.ServletContext接口的实例化 以上是常用的对象 5. pageContext对象 是javax.servlet.j

  • 浅谈Java编程中string的理解与运用

    一,"=="与equals() 运行以下代码,如何解释其输出结果? public class StringPool { public static void main(String args[]) { String s0="Hello"; String s1="Hello"; String s2="He"+"llo"; System.out.println(s0==s1);//true System.out

  • Java编程中的构造函数详细介绍

    本文主要是为新手.对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法.希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解.当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 1.构造函数的概念 很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数. 首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回类型

  • Java编程中避免equals方法的隐藏陷阱介绍

    摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继承类作为面向对象语言中的等价关系的基础问题,要保证派生类的equal正确性语义所会面对的困难.Bloch这样写到: 除非你忘记了面向对象抽象的好处,否则在当你继承一个新类或在类中增加了一个值组件时你无法同时保证equal的语义依然正确 在<Programming in Scala>中的第28章演示

  • Java 编程中十个处理异常的建议

    一.尽量不要使用e.printStackTrace(),而是使用log打印. 反例: try{ // do what you want }catch(Exception e){ e.printStackTrace();} 正例: try{ // do what you want }catch(Exception e){ log.info("你的程序有异常啦,{}",e);} 理由: printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,排查异常日志不太方便

  • 详解Java线程中常用操作

    目录 线程的常用操作 守护线程(后台线程) 线程串行化 线程优先级 线程中断 线程的常用操作 设置线程名字:setName() 获取线程名称:getName() 线程唯一Id:getId() // 自定义线程名称 String threadName = "threadName"; // 构造方法方式 Thread thread = new Thread(() -> {     System.out.println("线程名=" + Thread.current

  • java编程中实现调用js方法分析

    本文实例讲述了java编程中实现调用js方法.分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { String str="2&1"

随机推荐