自增(++)和自减(--)运算符
package com.sdjt.study.fuhao;
/**
* @author:lyy
* @version 创建时间:2009-8-4 下午07:40:06
* 类说明
*/
public class Test {
public static void test(){
int i = 0;
int j = i++;
int k = --i;
System.out.println(i);
System.out.println(j);
System.out.println(k);
}
public static void test1(){
int i = 0;
int j = i++ + ++i;
int k = --i + i--;
System.out.println(i);
System.out.println(j);
System.out.println(k);
}
public static void test2(){
int i=0;
System.out.println(i++);
}
public static void test3(){
float f=0.1F;//能否通过编译?
f++;
double d=0.1D;
d++;
char c='a';
c++;
}
public static void main(String[] args) {
test();
test1();
test2();
test3();
}
}
结果为:
0
0
0
0
2
2
0
• 自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。
• 自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。
在第一个例子中,int j=i++;是后缀式,因此i的值先被赋予j,然后再自增1,所以这行代码运行后,i=1、j=0;而int k=--i;是前缀式,
因此i先自减1,然后再将它的值赋予k,因此这行代码运行后,i=0、k=0。
在第二个例子中,对于int j=i++ + ++i;,首先运行i++,i的值0被用于加运算(+),之后i自增值变为1,然后运行++i,i先自增变为
2,之后被用于加运算,最后将i两次的值相加的结果0+2=2赋给j,因此这行代码运行完毕后i=2、j=2;对于int k=--i + i--;用一样的思
路分析,具体过程在此不再赘述,结果应该是i=0、k=2。
自增与自减运算符还遵循以下规律:
1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。
3. 它们的运算结果的类型与被运算的变量的类型相同。
package com.sdjt.study.fuhao;
/**
* @author:lyy
* @version 创建时间:2009-8-4 下午07:53:43 类说明
*/
public class Test1 {//通过编译
public static void main(String[] args) {
// 整型
byte b = 0;
b++;
// 整型
long l = 0;
l++;
// 浮点型
double d = 0.0;
d++;
// 字符串
char c = 'a';
c++;
// 基本类型包装器类
Integer i = new Integer(0);
i++;
}
}
分享到:
相关推荐
在实际编程中,了解和熟练运用这些比较运算符可以帮助我们编写出更精确的条件判断,从而实现复杂的业务逻辑。在PHP中,这些运算符是构建高效、可靠的代码的基础,尤其是在处理用户输入验证、数据过滤、算法实现等...
7. 运算符重载的缺点:运算符重载也存在一些缺点,例如,它可能会使我们的程序变得更加复杂和难以理解,特别是在多个运算符重载的情况下。 运算符重载是 C++ 中一个非常有用的机制,它可以使我们的程序更加简洁和...
关系运算符用于比较两个值之间的关系,并返回一个布尔值(真或假)。常见的关系运算符有: 1. **大于运算符 (>)** 2. **小于运算符 (<)** 3. **等于运算符 (==)** 4. **大于等于运算符 (>=)** 5. **小于等于运算符 ...
它提供了丰富的运算符和关键字来实现复杂的功能。本文将详细介绍C语言中的运算符及其特性,并简要提及C语言的一些关键概念。 #### 运算符概述 C语言中的运算符根据操作数的数量可分为以下几类: 1. **一元运算符*...
3. **类型推断**:在一些支持类型推断的语言(如C#、Java)中,三元运算符的返回类型会根据表达式1和表达式2的类型自动确定。这使得我们可以写出更灵活的代码,无需显式指定返回类型。 4. **返回值**:三元运算符的...
这个过程稍微复杂一些,但依然可以通过成员函数实现: ```cpp Complex operator*(const Complex& other) const { double realPart = (real * other.real) - (imaginary * other.imaginary); double ...
关系运算符用于比较两个值,并返回一个布尔值(真或假),主要用于条件判断。 - 大于(>):如果第一个操作数大于第二个操作数,则返回真。 - 小于(<):如果第一个操作数小于第二个操作数,则返回真。 - 等于(==...
JavaScript作为一种广泛使用的脚本语言,提供了丰富的运算符集,涵盖算术、比较、逻辑、位、赋值等多种类型。下面,我们将根据给定的文件信息,详细解析JavaScript中的一些常用运算符。 ### 算术运算符 #### 加法...
运算符重载允许我们在不同的上下文中为同一个运算符赋予不同的含义,这在处理自定义数据类型如矩阵时非常有用。例如,我们可以通过重载"+"运算符来实现矩阵的相加,重载"-"运算符进行矩阵的相减,重载"*"运算符实现...
在SQL技术中,范围运算符、列表运算符、模式匹配符、空值判断符和逻辑运算符是构建复杂查询的基础。下面将详细解释这些概念及其用法。 1. 范围运算符: 范围运算符通常用于筛选符合一定数值范围的数据。在例子中,`...
C语言作为一种高级编程语言,其运算符和表达式的多样性和复杂性是学习C语言时的重要组成部分。在C语言中,运算符是用来进行数据运算的符号,它可以包括加减乘除等算术运算符,也可以是用于比较、逻辑运算、位操作等...
数字表达式、逻辑表达式和字符串表达式是编程中最基本的元素之一,而ARM汇编语言中的这些表达式和运算符为我们提供了强大的工具来实现复杂的功能。理解这些基本概念对于编写高效的汇编代码至关重要。
下面将详细介绍Java中各种运算符的优先级及结合性,并提供一些实例帮助理解。 #### 二、运算符优先级表 1. **最高优先级**: - `()`(圆括号):用于分组操作,可以改变运算符的默认优先级。 - `[]`(方括号):...
在C语言和C#中,还有一些关键字如 `auto`、`break`、`case`、`continue` 等,它们用于控制程序流程,不在运算符范畴,但也是编程中不可或缺的部分。 总的来说,理解运算符的优先级和结合性是编程的基本功,它能帮助...
通过上述介绍,我们可以看到表达式求解涉及到的主要概念和技术包括栈数据结构、运算符和操作数的管理、以及如何利用栈来处理复杂的数学表达式。这种算法广泛应用于编译器设计、计算器程序开发等领域。理解并掌握这一...
此外,我们还可以重载其他运算符,如赋值运算符(=)、比较运算符(==, !=, <, >, , >=)等,以提供更完整的复数类功能。 在提供的压缩包文件中,可能包含了`readme.txt`,它是对这个项目的简要说明,可能涵盖了...
在编程和教学实践中,我们经常遇到一些复杂的运算符优先级关系的问题。例如,在一个表达式中同时出现了多个运算符时,我们如何确定它们的优先级关系呢?这个时候,我们可以使用上述规则来确定它们的优先级关系。 ...
JAVA程序设计课件-JAVA运算符 本篇资源摘要信息主要介绍了JAVA程序设计的基本语法知识,涵盖了...在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,把这种顺序称作运算符的优先级。
本教程将聚焦于Python爬虫中的一个基础但至关重要的概念——条件语句和比较运算符,这些都是编写逻辑控制和数据处理的核心部分。通过学习本教程,你将能够更好地理解和运用这些知识来编写更复杂的爬虫脚本。 首先,...