精华内容
下载资源
问答
  • 复合赋值运算符

    千次阅读 2018-10-17 12:48:18
    复合赋值运算符 运算符 描述 实例 += 加法赋值运算符 c += a 等效于 c = c + a -= 减法赋值运算符 c -= a 等效于 c = c - a *= 乘法赋值运算符 c *= a 等效于 c = c * a /= 除法赋值运算符 c /= a 等效于 ...

    复合赋值运算符
    运算符    描述                   实例
    +=    加法赋值运算符        c += a 等效于 c = c + a
    -=    减法赋值运算符         c -= a 等效于 c = c - a
    *=    乘法赋值运算符         c *= a 等效于 c = c * a
    /=    除法赋值运算符         c /= a 等效于 c = c / a
    %=    取模赋值运算符       c %= a 等效于 c = c % a
    **=    幂赋值运算符           c **= a 等效于 c = c ** a
    //=    取整除赋值运算符     c //= a 等效于 c = c // a


    !!!

    num = 10
    num *= 3 + 2 等同于 num = num * (3 + 2)
    输出结果为 50

    !!!

    展开全文
  • 下表列出了“+=、-=、*=、/=、%=”复合赋值运算符的描述及例子。复合赋值运算符同简单赋值运算符一样,也是双目运算符,需要两个操作数。不同的是,复合赋值运算符要先执行运算符自身要求的运算后,再将运算后的结果...

    复合赋值是指先执行运算符指定的运算,然后再将运算结果存储到运算符左边操作数指定的变量中。下表列出了“+=、-=、*=、/=、%=”复合赋值运算符的描述及例子。

    a9c0da2390b5e755fc29c74091a2ddbd.png

    复合赋值运算符同简单赋值运算符一样,也是双目运算符,需要两个操作数。不同的是,复合赋值运算符要先执行运算符自身要求的运算后,再将运算后的结果赋值给左边的操作数指定的变量。

    复合赋值运算符“+=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相加操作,然后再将相加的结果赋值给左边的操作数指向的变量。例如下面语句:

    int a = 10;

    a += 20;

    此时,变量a等于30,其过程是变量a先与数值20相加,因为变量a的值是10,因此与数值20相加的结果是30,再将30赋值给变量a,此时变量a的值为30。

    复合赋值运算符“-=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相减操作,然后再将相减的结果赋值给左边的操作数指向的变量。例如下面语句:

    int a = 20;

    a -= 18;

    此时,变量a等于2,其过程是变量a先与数值18相减,因为变量a的值是20,因此与数值18相减的结果是2,再将2赋值给变量a,此时变量a的值为2。

    复合赋值运算符“*=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相乘操作,然后再将相乘的结果赋值给左边的操作数指向的变量。例如下面语句:

    int a = 20;

    a *= 3;

    此时,变量a等于60,其过程是变量a先与数值3相乘,因为变量a的值是20,因此与数值3相减的结果是60,再将60赋值给变量a,此时变量a的值为60。

    复合赋值运算符“/=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相除操作,然后再将相除的结果赋值给左边的操作数指向的变量。例如下面语句:

    int a = 15;

    a /= 3;

    此时,变量a等于5,其过程是变量a先与数值3相除,因为变量a的值是15,因此与数值3相除的结果是5,再将5赋值给变量a,此时变量a的值为5。

    复合赋值运算符“%=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行取余操作,然后再将取余的结果赋值给左边的操作数指向的变量。例如下面语句:

    int a = 15;

    a %= 8;

    此时,变量a等于7,其过程是变量a先与数值8执行取余运算,因为变量a的值是15,因此与数值8取余运算的结果是7,再将7赋值给变量a,此时变量a的值为7。

    示例1:复合赋值运算符

    在D盘Java目录下,新建“ComplexAssignSample.java”文件。用记事本打开“ComplexAssignSample.java”文件,输入以下代码:

    3e25c7e3167ab1535f2b9df4c03615f1.png

    代码结构分析

    程序功能主要是演示复合赋值运算符+=、-=、*=、/=、%=用法。

    程序语句都很简单,不再细说。

    编译“ComplexAssignSample.java”文件,在命令行窗口输入“javac ComplexAssignSample.java”并执行命令,编译通过后,在命令行窗口输入“java ComplexAssignSample”运行Java程序,命令行窗口显示如下信息:

    21e7c53fdc91b78f0977a056662cb8ca.png图 6-6 复合运算符示例执行结果

    73640f72de1bd2daadd766ed5847c1c1.png

    复合赋值运算符是先运算再赋值,复合赋值运算符右边操作数是表达式时,先计算表达式的值,其计算结果再参与运算符的运算,最后将最终结果赋值给左边操作数指定的变量。

    061d4cb26eeae9f4fd3570b1deae8305.png

    (1)下列语句中变量a的结果为()

    int a = 15;

    a += 10;

    a*=2

    A.27

    B.50

    C.25

    D.35

    (2)下列语句中变量b的结果为()

    int b = 15

    b %= 8

    A.8

    B.7

    C.9

    D.10

    (3)下列语句中变量c的结果为()

    int c = 3;

    c += 3*2;

    A. 6

    B. 8

    C. 9

    D. 12

    展开全文
  • 根据JLS(Java语言规范)指出,复合赋值运算符表达式 E1 op= E2 等价于 E1 = (T)((E1) op (E2)) 其中T是E1的类型,但E1只会被求值一次。也就是说上面a+b的执行过程是这样的,a = (byte)(a+b);在赋值的时候发生了强制...

    1.引入问题

    切入正题,看下面代码,结果应该是怎么样的

    public class App{

    public static void main( String[] args ){

    byte a=1 ;

    int b = 10;

    a= a+b;

    System.out.println(a);

    a+=b;

    System.out.println(a);

    }

    }

    这段代码的执行结果是什么??

    2. 执行结果

    。。。。。。。。。。。。。。。。。。。答案如下。。。。。。。。。。。。。。

    上面的代码的编译的时候会报错,编译失败。因为在函数内部第三行中,左边的a是byte类型,右边的a是byte类型 b是int类型,当a和b相加的时候就会进行类型提升。导致a+b的结果是int,把一个int型的值赋值给一个byte类型的时候自然会报错。但是a+=b;这行代码却是可以正常执行的,这是为什么呢?

    3. 结果分析

    关于第三行报错的原因上面已经说过了,但是a+=b;能够正常执行的原因是什么呢?根据JLS(Java语言规范)指出,复合赋值运算符表达式 E1 op= E2 等价于 E1 = (T)((E1) op (E2)) 其中T是E1的类型,但E1只会被求值一次。也就是说上面a+b的执行过程是这样的,a = (byte)(a+b);在赋值的时候发生了强制转换,所以是可以正常编译通过的。这样就解释了上面编译的结果了。

    展开全文
  • 我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值。比如说:上面的这两条语句相当于但是...

    短文涨姿势,看了不白看,不关注等啥?

    我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符。复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值。比如说:

    184fdc28f9e2b9b78f0868debb76d2ae.png

    上面的这两条语句相当于

    94c7dca81b1f99b99e36fcf1244013a1.png

    但是,如果碰到下面这样的情况,a的值该应该是多少呢?

    dcaf2149924ad824af2fdbe676b46f27.png

    有人认为应该按以下方式来计算,因为我们都知道,在四则运算规则中,遵循“先乘除,后加减”的原则

    7c1cbb3939203d7f039631d0eff8613e.png

    按照这样的方式来计算,得到a的值应该是7,但实际运行程序所得到的结果是8。这是为什么呢?

    就是因为复合赋值运算符在完成运算的时候,遵循一个规则:把“=”右边当作整体!也就是说,刚才的运算和赋值操作应该被解释为以下形式

    40c236da96e838ed48f5934c56048b8b.png

    因此,按照这种方式,“=”右边的“3+1”应该被当作整体,优先进行运算,所以得到的最终计算结果就是变量a的值为8。

    我们再来看另外一个问题,这一次,我们把变量a的类型由原来的int改为short。

    5f93fc0c1d6d5d335bff6d9f7996f33a.png

    我们这么写代码没有任何问题,能够顺利通过编译。但是,如果我们没有使用复合赋值运算符,而是按如下所示的方式编写代码

    668d41fd6992190dfcaf893f85320b1d.png

    在这种情况下,大家可以看到代码不能通过编译。我们把一个算术表达式的运算结果赋值给byte或者是short类型的变量,有时候会引起编译错误,所以按这种方式写代码会导致编译错误。关于引起这种错误的原因,大家可以看我的另一篇文章《Java语言中为byte和short类型变量赋值为啥会报错?看完秒懂》,该文对此现象有详细解释。我们现在重点讨论使用复合赋值运算符进行操作的时候,同样会有给short类型变量赋值的操作,为什么就不报错呢?原因就是:使用复合赋值运算符在对变量进行赋值的时候,编译器会“暗地里”加上一个强制类型转换的操作。也就是说,使用复合赋值运算符进行操作的时候,实际上等同于如下写法

    54fb12e806b970a8dd23054f97e6de1d.png

    这种强制类型转换,其实有可能让我们的程序在不经意间产生莫名其妙的错误,请看下面的例子

    6c7d59f293fc87663a6cc0ccd1314b97.png

    这一次,我们把a的初始值由原来的2改成了20000,并且在代码中还加入了输出a的语句,那么,输出结果会是多少呢?首先来讲,这段代码并没有报错,那么这个输出结果会让人很多人大吃一惊,它并不是我们想象的80000,而是竟然输出了14464!

    76e09eb8748bf5a737d7a1c9e7bd95f2.png

    之所以会输出这样的结果,就是因为80000已经超出了short类型数据的最大值,而我们强制把这个已经超过最大值的“80000”经过强制类型转换赋值给short变量,就会产生“溢出”,最终导致实际赋给变量a的是一个错误的值!最可恶的是,因为是强制类型转换之后进行的赋值,所以编译器并不报错,从而导致很多人掉到坑里还不知道!

    通过这个篇文章,大家可以看到:一个简单的复合赋值运算符竟然也“暗藏杀机”,我们平时编程一定要小心哦!

    看短文,涨姿势,如想系统学习Java编程,点击下方的“了解更多”即可,不让你进去,用QQ登录就可以啦!有问题也可以加入我的QQ群一起讨论!

    展开全文
  • C语言复合赋值运算符

    千次阅读 2020-02-07 18:40:16
    如果你想简单了解一下C语言的复合赋值运算符的话那这里可能有你要的东西 复合赋值运算符:+= -= *= /= %= 如下图 如果碰到一堆的复合赋值运算符一起的 建议按照公式先写一遍在算 不然很可能答案是错的 如a+=b/=c*=...
  • 复合赋值运算符+= -= /= *= %= 扫描仪相关代码 import java.util.Scanner; Scanner input = new Scanner(System.in); int jssj1 = input.nextInt(); //如果是接收字符串类型则是input.next(); 算数运算符 如果计算...
  • 请注意,在所有情况下,对k的赋值都会覆盖右侧可能发生的任何增量.将评论放在一行:int k = 12;k += k++;System.out.println(k); // 24k表示在使用该值后递增,因此这与编码k = 12 12相同k = 12;k += ++k;System.out....
  • 复合赋值运算符,除了书写简单、使代码更加简洁的优势之外,还有一个很重要的优点。 能自动在代码底层完成数据类型的转换 也是因为这个优点,建议尽量使用复合赋值运算符。 实例 @Test public void run() { //...
  • += 加法赋值运算 c +=a 等价于c = c+a-= 减法赋值运算 c -=a 等价于c = c-a如a = 10a += 1 就是a = 10+1 = 11a -=3 就是a = 10 -3 =7'''c =10c +=1 +2 #解释器先算复合赋值运算右侧的表达式,再算复合赋值运算# c +=...
  • += -= 等为复合赋值运算符   看java specification中的一句话   A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except th.....
  • 我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值。比如说:上面的这两条语句相当于但是...
  • 23. Python基本运算符,复合赋值运算符和运算符优先级问题
  • 原文链接:http://blog.csdn.net/lyh__521/article/details/49622601复合赋值运算符  ...重载复合赋值运算符: 赋值运算符必须定义为类的成员,复合赋值运算符通常也应该定义为成员函数(但并不是必须这样)。 复合赋
  • 赋值运算符赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。   语法:变量名称=表达式内容   在 Java 语言中,“变量...
  • 转载自: ...   java 中的=为简单赋值运算符, ...+= -= 等为复合赋值运算符   看java specification中的一句话   A compound assignment expression of the form E1 op= E2 is eq...
  • 赋值运算符以下是Java语言支持的赋值运算符-运算符描述例=简单的赋值运算符。将值从右侧操作数分配给左侧操作数。C = A + B将A + B的值赋给C+ =添加AND赋值运算符。它将右操作数添加到左操作数,并将结果分配给左...
  • 自增自减运算符 ...复合赋值运算符 复合运算符具体有如下几种:+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=。 其含义为 exp1 op= exp2 等价于 exp1=exp1 op exp2 例如: a+=3 等价
  • 加法操作复合赋值运算符运算符优先级问题基本运算符运算符 说明 and, or, not 布尔与, 布尔或, 布尔非 is, is not 同一性判断, 判断是否为同一个对象 , >=, !=, == 比较值是否相当, 可以连用 &, |, ^ 按位与,...
  • 一**、算术运算符** 运算符为 +、加 -、减 、 乘 /、除 //、取整除 % 、取余 /、幂 ** 二、 赋值运算符** ...三、复合赋值运算符 += 加法赋值运算符 c += a 等效于 c = c + a -= 减法赋值运算符...
  • 下表列出了“+=、-=、*=、/=、%=”复合赋值运算符的描述及例子。 复合赋值运算符同简单赋值运算符一样,也是双目运算符,需要两个操作数。不同的是,复合赋值运算符要先执行运算符自身要求的运算后,再将运算后的...
  • 这篇博客对复合赋值运算符可能带来的性能优化进行讨论,内附可编译通过的例程。
  • 在这种情况下, §15.26.2复合赋值运算符 。 摘录:E1 op= E2的复合赋值expression式相当于E1 = (T)((E1) op (E2)) ,其中T是E1的types,只是E1只被计算一次。从§15.26.2引用的一个例子以下代码是正确的:short x ...
  • 这篇博客咱们说一下复合赋值运算符跟一元二元运算符,不过在说这些之前会先理一下之前忘记说的一点,“++”跟“--”,越是细节咱们越是重视一下。 1,“++”跟“--”: ........1),++ ,自加一,有前加和后加...
  • 我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值。比如说:上面的这两条语句相当于但是...
  • 复合赋值运算符 运算符 描述 实例 += 加法赋值运算符 c += a 等效于 c = c + a -= 减法赋值运算符 c -= a 等效于 c = c - a *= 乘法赋值运算符 c *= a 等效于 c = c * a /= 除法赋值运算符 c /= a 等效于 c = c / a ...
  • Python教程(九)--复合赋值运算符

    千次阅读 2019-01-21 11:08:05
    Python教程(九)–复合赋值运算符 代码举例 #在其他的一些语言中,如果想让一个变量自增1,则有以下一些方法: #i++,++i,i = i+1,i+=1 #但是在python当中,只能用i=i+1和i+=1,这两种方案。 i = 1 i += 1 print(i)...
  • 复合赋值运算符其中隐含了一个强制类型转换。 byte、short、char在参加运算时结果值会自动转向int byte num1 = 12; byte num2 = 14; num1 += num2; // num1 自动转换为 int num1 = num1 + num2; // 错误 第三行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,427
精华内容 570
关键字:

复合赋值运算符