Java运算符常规与叛逆

package com.test.java;

public class Test1 {

public static void main(String[] args) {

int i=12,m=12,n=12,j=12,k=12;

//从左到右或者从右到左由=决定,而不是由+=,-=,*=,/=决定的

//全变化的赋值(顺序不是从左到右或者从右到左,遵守运算优先级),先乘法把值赋给i 再算i+

System.out.println(i*=i+=i);//i*i=i+=i => i*i+i*i=i =288

//部分变化的赋值(顺序从左到右或者从右到左,遵守运算优先级),先乘法,只赋值给+的m,原有m不变

System.out.println(m+=m*=m);//m+=m*m=m => m+m*m=m =156

//部分变化的赋值(顺序从左到右或者从右到左,遵守运算优先级),先乘法,只赋值给-的n,原有n不变

System.out.println(n-=n*=n);//n-=n*n=n => n-n*n=n =-132

//全变化的赋值(顺序不是从左到右或者从右到左,遵守运算优先级),先乘法把值赋给j 再算j-

System.out.println(j*=j-=j);//j*j=j-=j => j*j-j*j=j =0

//叛逆者:混合多步,多值运算(不遵守运算优先级,直接从左到右或者从右到左)

System.out.println(k*=k-=k/=k+=k);/*k*=k-=k/=2k=k => k*=k-=k/2k=k =>

k*=k-=0=k => k*=k-0=k => k*=k=k => k=k*k =144*/

你可能感兴趣的:(Java运算符常规与叛逆)