注:~  取反位。二进制1变0,0变1
&  按位与。相应位都为1结果为1,否则为0
| 按位或。相应位只要有一个为1,则为1
^  按位异或。相应位相同,则为0本人急求语句理解,由于现今的计算机教科书粗糟的很,很多的不详细,学起来问题很多,下个月又要考试了,请论坛各位大哥帮帮忙,小弟跪谢了........①取模运算符%,其操作数可以为浮点数,如:45.4%10=5.4
例子:int i = 10,j = 3
float m = 213.5f,n = 4.0f
i%j = 1 ; m%n = 1.5
(符号“/”和“%”不是一样的吗?“%”不是取余数吗?书上的例子的结果费解)②public class OperatorsAndExpressions {
void string plus(){
int x = 3,y = 4,z = 5;
String s ="xyz="; 
System.out.println(x+y+z); 
System.out.println(s+x+y+z); 
System.out.println(x+y+z+s); 
}
pubilc static void main(String args[]){
OperatorsAndExpressions OperAndExp = new OperatorsAndExpressions();
OperAndExp.stringPlus();
}
}
(这段中出来的答案如何理解?答案是:12;xyz=345; 12xyz=。后面2个答案无法理解)
③int a = 15,b = 24; //a的最右边8位为00001111,b的最右边8位00011000,a和b其余位为0
  a = a^b;  //a的最右边8位为00010111,a=23
  b = b^a;  //b的最右边8位为00001111,b=15
  a = a^b;  //a的最右边8位为00011000,a=24
   (此题结果根本无法理解了....a^b 不就跟 b^a 结果一样了吗?其中区别在哪?)

解决方案 »

  1.   

    我也觉得书是讲得比较抽象,建议你去下载张孝祥老师的JAVA视频来看看。
      

  2.   

    ②System.out.println(x+y+z); //这个由于x,y,z都是数值类型,所以+是数值类型的+
    System.out.println(s+x+y+z); //四个操作数中有一个String类型,则三个+都是字符串的连接符,把非字符串类型的操作数:x,y,z先转为字符,再用+连接为一个字符串。
    System.out.println(x+y+z+s); //同上。
    ③int a = 15,b = 24; //a的最右边8位为00001111,b的最右边8位00011000,a和b其余位为0 
      a = a^b;  //a的最右边8位为00010111,a=23 
      b = b^a;  //b的最右边8位为00001111,b=15 
      a = a^b;  //a的最右边8位为00011000,a=24 这个是经典的不用第三个变量互换两个变量的算法。
    a^b是和b^a一样,但你没有发现三都的操作数在变化?你写成下面的也是一样的结果。a=b^a;
    b=a^b;
    a=b^a;还可以写为:b=^=a^=b;
    a^=b;类似的还有:
    a=a+b;
    b=a-b;
    a=a-b;
      

  3.   

    ②的第三个System.out.println(x+y+z+s); 前三个x+y+z是一个数值加减运算,得出的结果与s进行字符穿连接。
      

  4.   

    %取余数
    /除法
    213.5%4.0解释:213里头有53个4.0,就剩下1.5可。System.out.println(s+x+y+z); //s是串,根据优先顺序,都以字符串来连接
    System.out.println(x+y+z+s); //同上,x,y,z都是数字,根据优先顺序之后,才产生结果