void boolTest(boolean x, boolean y) {
    x = x & y;//这几种用法结果和逻辑运算符一样啊,按位运算不是俺照每一位数字运算么,boolean怎么按位啊?
    x = x | y;
    x = x ^ y;
    x &= y;
    x ^= y;
    x |= y;
      }
  void charTest(char x, char y) {
    x = (char)+y;//这种用法什么意思??
    x = (char)-y;
 
  }

解决方案 »

  1.   

    两边是整数类型的话称为“位运算符”两边是布尔类型的话称为“布尔逻辑运算符”|  布尔或
    &  布尔与
    ^  布尔异或布尔逻辑运算符与逻辑运算符的运算结果是一致的,仅有一点不同:(a > b) && (b > c)
    如果 a > b 为 false 的话,后面的 b > c 不会再进行比较,这种行为称为“短路运算”。(a > b) & (b > c)
    如果 a > b 为 falser 的话,后面的 b > c 会再进行比较,这种行为称为“非短路运算”。布尔异或没有可取代的逻辑运算符
      

  2.   

    布尔与真值表
    -------+-------+-------
       &   | true  | false 
    -------+-------+-------
     true  | true  | false
    -------+-------+-------
     false | false | false
    -------+-------+-------布尔或真值表
    -------+-------+-------
       |   | true  | false 
    -------+-------+-------
     true  | true  | true
    -------+-------+-------
     false | true  | false
    -------+-------+-------布尔异或真值表
    -------+-------+-------
       ^   | true  | false 
    -------+-------+-------
     true  | false | true
    -------+-------+-------
     false | true  | false
    -------+-------+-------
      

  3.   

    任何数据存在计算机内都是二进制,只要是二进制就有二进制的位.你就这样来理解吧,boolean类只占一位,1表示true,0表示false. x = (char)+y;
     x = (char)-y; 这两个式子是互为比较的,主要说的是字符本来是无符号数,都是正数,但也可加符号,这个相当于转换为int数了,正号保持原字符,负号则要改变原字符,因为把原字符的最高一位改变了。
      

  4.   

    第二题第一次看到这样的写法,应该与 x = (char)(0 + y); 的效果一样
      

  5.   

    不知下面那个x = (char)+y;是什么用法啊
      

  6.   

    哈哈,原来 (char)+y 当中的加号是“一元加”运算符,优先级别高于“强制转换”运算符,呵呵。
      

  7.   

    加入我让x=‘a’,y=‘b'
    若x = (char)+y;后,x输出b
     
    若x = (char)-y;后,x输出?为什么啊 
      

  8.   

    1、y='a'的unicode是97,字符两个字节,二进制是这样的:0000 0000 0110 0001
    2、
    -y,先把'a'转为int的97 0000 0000 0000 0000 0000 0000 0110 0001,再加上符号位,这叫原码,变成
    -97的原码 :           1000 0000 0000 0000 0000 0000 0110 0001 原码变为反码:除符号位按位取反:
    -97的反码:            1111 1111 1111 1111 1111 1111 1001 1110反码变为补码:反码加1
    -97的补码:            1111 1111 1111 1111 1111 1111 1001 1111任何整数在计算机内都是以补码的形式存在的。
    3、
    (char)-97 强制类型转换就是把字符的高的两个字节舍弃,只保留了低的两个字节。结果赋给x的是:
    1111 1111 1001 1111。
      

  9.   

    import java.util.*; public class Lamp{ 
        public static void main(String[] args) { 
           char y='a';
           char x=(char)-y;
           System.out.print("字符y的值为:"+y+" 其二进制形式是:");
           System.out.println(Integer.toBinaryString(y)); //这个y实际已经转为int类型了.
           System.out.print("整数-y的值为:"+(-y)+" 其二进制形式是:");
           System.out.println(Integer.toBinaryString(-y)); 
           System.out.print("字符x的值为:"+(int)x+" 其二进制形式是:");
           System.out.println(Integer.toBinaryString((int)x));
        }} F:\java>java Lamp
    字符y的值为:a 其二进制形式是:1100001
    整数-y的值为:-97 其二进制形式是:11111111111111111111111110011111
    字符x的值为:65439 其二进制形式是:1111111110011111