Java从小白到入门,Day2(运算符和表达式)

按作用于操作数的数量分为:一目运算符:++、--、+(正号)、-(负号)、!、~(位非);(操作数只有1位)

                                     二目运算符:+(加)、-(减)、*、/、%等;(操作数有2位)

                                     三目运算符:?:。类型:代码1?代码2:代码3;   (代码1位boolean类型,代码2与代码3同类型),表示如果代码1为真,则取代码2为结果,如果代码1为假,则取代码3为结果。

按功能划分:转换运算符、算术运算符、逻辑运算符、位运算符、赋值运算符。  

              转换运算符:将摸个类型的数据转换为其他类型的数据。

                               数字类型→数字类型:取范围小的类型转换为范围大的类型,使用隐式转换,为安全转换。反之,使用显式转换,该转换为不安全的。

                               隐式转换:例如, int a=1;   double b=a; 

                               显式转换:例如,double a=1;   int b=(int)a;

                                返回类型:就是一句代码运算结果的类型。

              算术运算符:用于数学运算(+、-、*、/、%),可以作用于数字类型,也可以作用于char类型。   一个算术运算的返回类型为取值范围大的操作数的类型。

              逻辑运算符:返回类型为boolean类型。(>、<、==、!=、&&、||、!)等。

                              对字符串的比较,必须使用:字符串1.equals字符串2,返回类型为boolean类型。

                               &&,||:左右两端必须为boolean类型。

                               !(非):右边必须为boolean类型。

              位运算符:用于对数字的二进制格式进行运算。

                            |:或运算(二元),将两位二级制同为0,取0;反之,取1。

                            &:且运算(二元),将将两位二级制同为1,取1;反之,取0。

                            ^:异运算(二元),将将两位二级制不同的,取1;反之,取0。

                            ~:非运算(一元),将右边的数字的二进制格式取相反(0变1,1变0)

                            <<:左移位(二元),将左边的数字的二进制格式向左移动指定的位数。

                            >>:右移位(二元),将右边的数字的二进制格式向右移动指定的位数。

                    二进制       转     十进制:  例如,0011,运算过程(从右向左看,1*20+1*21+0*22+0*23)=3,依次类推。

                    十进制      转      二进制:  例如,22,运算过程(24最接近22,22-24=6,;22最接近6,6-22=2;21=2),所以有 0*20+1*21+1*22+0*23+1*24,二进制表示为10110 ,  依次类推

              赋值运算符:用于将赋值符号的右边的计数结果赋值给左边的变量。(=、+=、-=、/=、*=、%=)

                               类型:a+=b+c→等效于a=a+(b+c)

              累加,累减运算符:(++、--),返回值为作用的变量类型相同。

                     a++:表示 计算结果与变量相同,然后将变量+1。

                     ++a:表示先将变量+1,然后计算结果与变量相同。

运算优先级:有多个运算符参与运算时;

              1,代码整体上从左到右进行;    2,若遇到括号(),先计算括号。    3,若遇到函数调用,立即将函数调用的结果计算出来。

表达式:任何一个由运算符和操作数组成的语句和语句的一部分。   所有的表达式都有返回类型。任何一个表达式都可以与其他表达式运行计算,只要返回类型满足要求。

          1, 赋值表达式的返回类型为被赋值的变量的类型,返回结果为变量的值。

          2,定义变量的语句没有返回类型(void).

          3,输出语句没有返回类型。

例1:                                                                                                               

int i=1;
i=(i=i+(i+(i=2)+i)+i)+3+i;
/*JVM中运算原理:i=(i=i+(i+(i=2)+i)+i)+3+i
* i=i+(i+(i=2)+i)+i
* i+(i+(i=2)+i)+i
* 1+(i+(i=2)+i)+i         i=1
* 1+(1+(i=2)+i)+i        i=1
* 1+(1+2+i)+i             i=2
* 1+(1+2+2)+2
* 8                             i=8
* 8+3+i
* 19
*/
System.out.println(i);

例2:

int a=1,b=2,c=3;
System.out.println(a+b+c);
/*a+b+c在JVM
* 1,去内存中找a对应的数据
* 2,读取下一个预算符 +
* 3,读取+后面的运算数b,同时读取b后面的运算式,看运算符,看是否先运行,+b+
* 4,计算a+b的结果,记为temp,
* 5,读取下一个预算符 +,
* 6,读取+后面的运算数c,同时读取c后面的运算式,无运算符,直接temp+c,计算结果
*/

例3:

System.out.println(-11%-7);
/*前面的操作数提供最终运算结果的符号,
* 前面的操作数的绝对值与后面操作数的绝对值提供最终结果
* -11%-7 转换为-(11%7)
*/

 

posted @ 2016-06-22 00:00  J牛人专线  阅读(245)  评论(0编辑  收藏  举报