package javaday3;
public class Test {
/**
*5.java中的运算符:
* 1.算术运算符:
* 二元运算符(有两个操作数的运算符):+ - * / %
* 注意:在进行除法运算的时候,如果要得到一个精确的值,则必须保证
* 除数或者被除数必须有一个是浮点型。
* 一元运算符:++ --
* ++:自增1
* a++ ++a
* --:自减1
* a-- --a
*
* 注意:1.++或者--出现在一个表达式中,如果在变量的前面则先自增或者自减然后参与运算,
* 否则先运算然后在自增或者自减。
* 2.一元运算符的优先级要高于二元运算付的优先级。
* 3.++和--操作数必须是一个变量。
* 2.关系运算符:
* 二元运算符:> < >= <= != ==
* 所有关系运算符运算结果都属于boolean类型(true/false)
* 注意:比较两个值是否相等要使用双等号(==)
* 3.逻辑运算符:
* 逻辑运算符主要有与或非组成
* 逻辑与:&&:二元运算符:
* 两个操作数都是true的时候结果true;
* 只要有一个操作数是false,则结果就是false.
* 注意:为了提高程序效率,java中逻辑与运算符如果第一个操作数为false.
* 则不再进行运算第二个操作数。
* 逻辑或:||:二元运算符
* 操作数只要有一个为true则结果为true
* 两个操作数否是false的时候结果为false.
* 注意:为了提高程序效率,java中逻辑或运算符如果第一个操作数为true.
* 则不再进行运算第二个操作数。
* 逻辑非:!:一元运算符:
* 只有一个操作数,如果操作数为true则结果为false.
*
* 注意:一般情况下逻辑运算符的操作数都要求是boolean类型的
* 4.位运算:为了方便对二进制位进行操作,java提供了4个位运算符。
* 按位与:&
* 8&12:
* 00001000
* 00001100
* ----------
* 00001000
* 规则:两个位上如果有一个0则结果为0
* 按位或:|
* 8&12:
* 00001000
* 00001100
* ----------
* 00001100
* 规则:两个位上如果有一个1则结果为1
*
* 按位异或:^
* 8^12
* 00001000
* 00001100
* ----------
* 00000100
* 规则:两个位上如果相同则为0,否则为1
* 按位取反:~
* ~8
* 规则:将每一位上的0变为1,1变为0
*
* 注意:表示负数的二进制规则,将正数取反加一
* 5.移位运算符:
* 左移:<<
* 4: 00000100
* <<3: 00100000
* 4<<3=32
* 1<<3=8
* m<<n==m*2的n次方
*
* 规则:将原来的二进制数据朝左边推n个位,右边缺的位补0.
* 注意:左移无关乎正负。
* 右移:>>
* 正数:
* 32 00100000
* >>3 00000100
* 32>>3====4
* m>>n==m/2的n次方
* 规则:将原来的二进制数据朝右边推n个位,左边缺的位补0.
* 负数:
* 无符号右移:>>>
*
*
*
*/
public static void main(String[] args) {
int i=8;
System.out.println(Integer.toBinaryString(-8));
System.out.println(4<<3);
//定义变量a
int a=10;
int b=3;
//++a;//a=a+1
int c=a-- + --b;
System.out.println(a+"----"+b);
System.out.println(++c);
boolean boo=a<b;
System.out.println(a==b);
int x=3;
int y=2;
int z=4;
/*boolean boo1=(x++ +y)>(--z +y);
boolean boo2=(--x - ++y)<(z-- + y++);*/
/* System.out.println(boo1);
System.out.println(boo2);*/
System.out.println((--x - ++y)<y||(x++ +y)>(--z +y));
System.out.println(x+"-----"+y+"-----"+z);
System.out.println(!((--x - ++y)<y));
//x= y= z=
}
}
作业:
请编写程序输出一下表达式的结果,并注明计算过程
- 24<<3
- 14<<4
- 9<<2
- -13<<2
- -6<<4
- 64>>4
- 12>>2
- 32>>2
- 88>>3
- -88>>2
- -56>>3
- -40>>2
- 28>>>2
- 90>>>4
- -18>>>2
- -20>>>1
- 4&7
- 9&8
- 76&25
- 23|32
- 19|18
- 43|12
- 7^9
- 11^19
- 13^20
- ~20
- ~33
- ~10
package demo;
public class demo { public static void main(String[] args){
System.out.println("24<<3=="+(24<<3)); System.out.println(Integer.toBinaryString(24<<3)); // 24<<3==24*2的3次方
System.out.println("14<<4=="+(14<<4)); System.out.println(Integer.toBinaryString(14<<4)); //14<<4== 14*2的4次方
System.out.println("9<<2=="+(9<<2)); System.out.println(Integer.toBinaryString(9<<2)); //9<<2== 9*2的2次方
System.out.println("64>>4=="+(64>>4)); System.out.println(Integer.toBinaryString(64>>4)); //64>>4==64/2的4次方
System.out.println("12>>2=="+(12>>2)); System.out.println(Integer.toBinaryString(12>>2)); //12>>2==12/2的2次方
System.out.println("32>>2=="+(32>>2)); System.out.println(Integer.toBinaryString(32>>2)); //32>>2==32/2的2次方
System.out.println("88>>3=="+(88>>3)); System.out.println(Integer.toBinaryString(88>>3)); //88>>3==88/2的3次方
System.out.println("28>>>2=="+(28>>>2)); System.out.println(Integer.toBinaryString(28>>>2)); //28>>>2==28/2的2次方
System.out.println("90>>>4=="+(90>>>4)); System.out.println(Integer.toBinaryString(90>>>4)); //90>>>4==90/2的4次方
System.out.println("4&7=="+(4&7)); System.out.println(Integer.toBinaryString(4&7)); /* 4:0100 7:0111 ------------ 4:0100 */
System.out.println("9&7=="+(9&7)); System.out.println(Integer.toBinaryString(9&7)); /* 9:1001 * 7:0111 * -------- * 1:0001 */
System.out.println("76&25=="+(76&25)); System.out.println(Integer.toBinaryString(76&25)); /* 76:01001100 * 25:00011001 * ----------- * 8:00001000 */
System.out.println("23|32=="+(23|32)); System.out.println(Integer.toBinaryString(23|32)); /* 23:00010111 * 32:00100000 * ----------- * 0:00110111 */
System.out.println("19|18=="+(19|18)); System.out.println(Integer.toBinaryString(19|18)); /* * 19:00010011 * 18:00010010 * ------------ * 19:00010011 */
System.out.println("43|12=="+(43|12)); System.out.println(Integer.toBinaryString(43|12)); /* * 43:00101011 * 12:00001100 * ------------ * 47:00101111 */
System.out.println("7^9=="+(7^9)); System.out.println(Integer.toBinaryString(7^9)); /* 7:0111 * 9:1001 * -------- * 14:1110 */
System.out.println("11^19=="+(11^19)); System.out.println(Integer.toBinaryString(11^19)); /*11:00001011 *19:00010011 * --------------- *24:00011000 */
System.out.println("13^20=="+(13^20)); System.out.println(Integer.toBinaryString(13^20)); /*13:00001101 *20:00010100 *----------------- *25:00011001 * */
System.out.println("~20=="+(~20)); System.out.println(Integer.toBinaryString(~20)); /* 20:00010100 * ----------------- *取反 :11101011 * +1:11101111 * * * */ System.out.println("~33=="+(~33)); System.out.println(Integer.toBinaryString(~33)); /* 33:00100001 * -------------- *取反 :11011110 * +1: * */
System.out.println("~10=="+(~10)); System.out.println(Integer.toBinaryString(~10)); /*~10:1010 * -------- * :0101 * */
}
}
|
2,请输入下列表达式的结果
int i=9;
int j=10;
boolean boo=++i<j&&i++>--j;
输出结果和i和j的值
package demo;
public class Demo2 { public static void main(String[] args) {
int i=9; int j=10; boolean boo=++i<j&&i++>--j; System.out.println(boo); System.out.println(i); System.out.println(j); } } . |
int i=3;
int j=5;
boolean boo=i--<j--||i++ >j++;
boolean boo1=!boo&&i--<j;
输出i,j,boo,boo1的值,并写出i和j的变化过程
package demo;
public class Demo2 { public static void main(String[] args) {
int i=3; int j=5; boolean boo=i--<j--||i++>j++; boolean boo1=!boo&&i--<j; System.out.println(boo); System.out.println(boo1); //i==3-1;j=5-1=4 System.out.println(i); System.out.println(j); } } |