[Java 基础]运算符和表达式

简介:

Java运算符

 

(1)赋值操作符

赋值操作符 (=)表示:取右边的值(即 右值),把它复制给左边(即 左值)。

右值可以是任意的常量、变量或表达式(只要可以生成一个值)。 

左值必须是一个明确的、已命名的变量。

复制代码
public  class Test {
     public  static  void main(String[] args) {
         int num = 10;
        System.out.println("num = " + num);
        num = 20;
        System.out.println("num = " + num);
    }
}
复制代码

 

(2)算术操作符

加号(+)减号(-)乘号(*)除号(/)取模(%)

与C/C++一样,JAVA也支持同时进行运算和赋值操作符的简化写法。

以下两种写法是等价的:

num = num + 20;     // num加20,然后赋值给num
num += 20;          // num加20,然后赋值给num 

 

(3)一元操作符

一元加号(+)一元减号(-)表示数值的正负。
int x = -10;     // 把负数-10赋值给x
int y = +10;     // 把正数10赋值给y,一般+省略
System.out.println("x = " + x);
System.out.println("y = " + y);

 

(4)自增与自减操作符

自增操作符是++

自减操作符是--

例:++a 等价于 a = a+1; 

自增和自减操作都可以分为前缀式和后缀式。

以自增为例, 

int x = 1;
int y = 1;
System.out.println("x = " + ++x);     // 前缀式
System.out.println("y = " + y++);     // 后缀式

Output:

 

x = 2
y = 1

由此可见,前缀式是先递增,然后再代入表达式;而后缀式是先代入表达式,再对自身进行递增运算。

 

(5)关系操作符

关系操作符生成的是一个 boolean 结果,它们计算的是操作数的值之间的关系。

如果关系是真的,关系表达式的结果为 true;反之,结果为 false

关系操作符包括小于(<)大于(>)小于或等于(<=)大于或等于(>=)等于(==)以及不等于(!=)


(6)逻辑操作符

逻辑操作符包括与(&&)或(||)非(!),它们根据参数的逻辑关系,生成一个boolean值。


(7)括号操作符

括号操作符(),可以提高括号中表达式的执行优先级。

int result1 = 1 + 2 + 3 * 4 - 5;
int result2 = (1 + 2 + 3) * 4 - 5;
System.out.println("1 + 2 + 3 * 4 - 5 = " + result1);
System.out.println("(1 + 2 + 3) * 4 - 5 = " + result2);

Output:

1 + 2 + 3 * 4 - 5 = 10
(1 + 2 + 3) * 4 - 5 = 19

 

(8)位操作符

按位与(&)按位或(|)异或(^)取反(~)左移(<<)右移(>>)无符号右移(>>>)

 

(9)三元操作符

三元操作符比较特殊,它有三个操作数。它的格式为:

(布尔表达式)? 值A : 值B 

如果布尔表达式的值为true,则结果为值A;反之,结果为值B。 

复制代码
public  static  int GetMaxNum( int x,  int y) {
     return (x >= y) ? x : y;
}

public  static  void main(String[] args) {
     int x = 5;
     int y = 20;
    System.out.println("The max of " + x + " and " + y + " is : " + GetMaxNum(x, y));
}
复制代码

:Java中只有一个三元操作符。 

 

(10)直接常量

一般说来,程序中使用了”直接常量“,编译器可以准确地知道要生成什么样的类型,但有时候却是模棱两可的。

直接常量后面的后缀字符可以标志它的类型。

若为大写(或小写)的 L ,表示 long 型。 

 

若为大写(或小写)的  F ,表示  float 型。
若为大写(或小写)的  D ,表示  double 型。

十六进制数适用于所有整数数据类型,以前缀为 0x(或0X),后面跟随0~9大小写的a~f

八进制数由前缀0以及后续的0~7的数字来表示。 

复制代码
public  class Test{
     public  static  void main(String args[]){
         long l = 123L;       //  long型:后缀为大写或小写的L
         float f = 12.3f;     //  float型:后缀为大写或小写的F
         double d = 54.345d;  //  double型:后缀为大写或小写的D
        
         int x = 0xffffffff;  //  十六进制数:前缀为0x,后续用0~9,a~f的数字来表示
         char c = 017;        //  八进制数:前缀为0,后续用0~7的数字来表示
    }
};
复制代码

 

(11)不同于C/C++,在JAVA中没有sizeof操作符

 

 

运算符的优先级和结合性

 

当多个运算符出现在同一个表达式中,会存在一个问题:谁先谁后呢?

这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + - 

从右到左

乘性 

* /

左到右

加性 

+ -

左到右

移位 

>> >>>  << 

左到右

关系 

>> = << = 

左到右

相等 

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / == >> = << == ^ = | =

从右到左

逗号

左到右

 

表达式

所谓表达式,是指由常量、变量或是操作数与运算符所组合而成的语句。

如下是一个简单的算术表达式语句

x = 2 + 3;

 本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/p/4015881.html,如需转载请自行联系原作者

相关文章
|
17天前
|
XML 数据可视化 前端开发
java正则表达式
java正则表达式
|
16天前
|
Java
Java 运算符
4月更文挑战第8天
|
1天前
|
Java
Java基础&运算符
Java基础&运算符
|
1天前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
2天前
|
Java 开发者
Java基础知识整理,注释、关键字、运算符
在日常的工作中,总会遇到很多大段的代码,逻辑复杂,看得人云山雾绕,这时候若能言简意赅的加上注释,会让阅读者豁然开朗,这就是注释的魅力!
37 11
|
5天前
|
并行计算 Java 编译器
Java Lambda表达式简介
Java Lambda表达式简介
12 0
|
7天前
|
Java 开发者
探索 Java 的函数式接口和 Lambda 表达式
【4月更文挑战第19天】Java 中的函数式接口和 Lambda 表达式提供了简洁、灵活的编程方式。函数式接口有且仅有一个抽象方法,用于与 Lambda(一种匿名函数语法)配合,简化代码并增强可读性。Lambda 表达式的优点在于其简洁性和灵活性,常用于事件处理、过滤和排序等场景。使用时注意兼容性和变量作用域,它们能提高代码效率和可维护性。
|
10天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
13天前
|
Java
Java 14 强势登场:Switch 表达式的进化之路
Java 14 强势登场:Switch 表达式的进化之路
18 0
|
16天前
|
Java 开发者
Java中的Lambda表达式:简洁、灵活的编程利器
在现代软件开发中,编写简洁、高效的代码是至关重要的。Java中的Lambda表达式为开发者提供了一种简洁、灵活的编程方式,使得代码更具可读性和可维护性。本文将探讨Lambda表达式的基本概念、语法结构以及在实际项目中的应用,以帮助读者更好地理解和运用这一强大的编程工具。
6 0