* 运算符:
* 有六大类
* 算术运算符
* 赋值运算符
* 比较运算符
* 逻辑运算符
* 位运算符号
* 三目运算符
*
*
* 1,算术运算符:
* +,-,*,/,% , ++(前加加,后加加),--(前减减,后减减)举例说明:
*
*
*
*@author jerry
*
*/
public class OperatorDemo1 {
publicstatic void main(String[] args) {
//定义一个int类型的变量a,并且赋初值为10
inta = 10;
//定义一个int类型的变量b,并且赋初值为20
intb = 20;
//求和,定义一个int的变量sum,并且赋值为变量a 和变量b的和
intsum = a + b;
//如何查看变量sum里面存在的值呢?
System.out.println("a+ b = " + sum);
//演示除法 /
intc = b/a;
System.out.println("b/a=" + c );
intd = a/b;
//eclipse 的快捷键: alt+方向键 移动当前行
System.out.println("a/b=" + d );
doublee = a*1.0/b;
System.out.println("a/b=" + e );
//演示取模操作 % (取余数)
intf = a%b;
System.out.println("a%b= "+f);
intg = b % a;
System.out.println("b% a=" + g );
//演示 ++ 前加加 和后加加
intx = 1;
// inty = ++x; // 前++, 数值先将自己的值 自增1,然后再将参与运算
inty = x++;// 后++, 数值先参与运算,然后再将自己的值 自增1
System.out.println("y="+y);//将内存中的值,直接输出到控制台
System.out.println("x="+x);// 将内存中的值,直接输出到控制台
System.out.println("x="+x++);//? 3 3 2
System.out.println("x="+++x);//? 4 3 4
//同理,前减减,后减减 与加加一样,省略
System.out.println("hello" + "world");
//除数不能为零
//什么叫除数,什么叫被除数 c =a/b; a 被除数, b除数
//定义一个int类型的变量z,并且赋值为10/5
intz = 10/5;
//重新给变量z赋值,为10/0;
z= 10/0;
//Exceptionin thread "main" java.lang.ArithmeticException: / by zero
System.out.println(z);
}
}
* 2,演示赋值运算符
* 符号:
* =,+=,-=,*=,/=,%=
*
*
*@author jerry
*
*/
public class OperatorDemo2 {
publicstatic void main(String[] args) {
inta = 10;
intb = 20;
System.out.println("a="+a);
System.out.println("b="+b);
//在a值的基础上,加上20,然后再赋值给自己
a+=20;// 等价于 a = a+20;
a-=10;// a = 20
a/=5; // a = 4;
a%=2; // a =0;
System.out.println("a="+a);
/**
* 面试题:
* short s=1;s = s+1;
* short s=1;s+=1;
* 上面两个代码有没有问题,如果有,那里有问题
*/
// shorts = 1;
//Typemismatch: cannot convert from int to short
//s= (short) (s+1); // 左边为short类型= 右边int类型,隐式转换无法成功的发生,需要强制类型转换
//byte,char ,short 类型不能直接参与运算,参与运算前,先转换为int类型
short s=1;
s += 1;
}
}
3,
* 演示三目运算符(三元运算符)
*
* (关系表达式)?表达式1:表达式2;
*
* 如果关系表达式为真,就返回表达式1的值
* 如果关系表达式为假,就返回表达式2的值
*
*@author jerry
*
*/
public class OperatorDemo7 {
publicstatic void main(String[] args) {
//求两个数的最大值
int x = 3;
inty = 4;
intz;
z= (x>y)? x : y;
//语句 : 表达式 +;
//表达式: 是运算符和操作数组成的式子
System.out.println("x="+x+",y="+y+"中的最大值:"+z);
//获取三个整数中的最大值(x=3,y=4,z=5)
intx1 = 323234312;
inty1 = 334432321;
intz1 = 334344312;
intmax = 0;
max= (x1>y1)? x1:y1;
max= (max>z1)? max : z1;
System.out.println("x1="+x1+",y1="+y1+",z1="+z1+"中的最大值:"+max);
//比较两个整数是否相同
inta = 10;
intb = 20;
System.out.println("a="+a+",b="+b+"是否相等呢?"+(a==b?true:false));
}
}
4,*
* 位运算符
*
*<< 左移
*>> 右移
*>>> 无符号的右移
*& 与
* | 或
* ^ 异或
* ~ 取反
*
*@author jerry
*
*/
public class OperatorDemo5 {
publicstatic void main(String[] args) {
//<< 左移
inta = 3;
// 00000011
//00000110左移一位 6
//00001100左移一位 12
//规律: 左移一位,就是乘以2. 而且比 a = a*2 运算速度快,位运算时速度最快的一种运算
System.out.println("a<<2= " + (a << 2));
byteb = -3;
//1 0000011 原码
//1 1111100 反码
//1 1111101 补码
//1 1111111 补码, 求原码
//1 1111110 反码
//1 0000001 原码 十进制的-1;
System.out.println("b>>2= " + (b >> 2));
//无符号右移
byteb1 = -3;
System.out.println("b1>>2= " + (b1 >> 2));
//& 运算 ,规则:与0 进行&运算,结果是0; 与1 进行&运算,结果为原值
System.out.println("6&3=" + (6&3));
/**
* 00000110
* & 00000011
* ------------
* 00000010
*
*/
//| 运算, 规则: 与0进行|运算,结果为原值;与1进行|运算,结果为1.
System.out.println("6|3=" + (6|3));
/**
* 00000110
* | 00000011
* ------------
* 00000111
*
*/
//^ 异或 规则:任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1
System.out.println("6^3=" + (6^3));
/**
* 00000110
* ^ 00000011
* ------------
* 00000101
*
*/
//~ 反码: 按位取反
System.out.println("~6="+ (~6));
/**
* 00000110 补码 反码 原码
*
* ~ 的作用就是按位取反
*
* 11111001 补码,由补码,请原码?
*
* 先减去1,然后按位取反
* 11111000
* 1 0000111 原码 -7
*/
}
}
5,演示 逻辑运算符
*
*&
* |
* ^
* !
*&&(短路与)
*||(短路或)
*
* 逻辑运算符的操作数是boolean类型
public class OperatorDemo4 {
publicstatic void main(String[] args) {
//&
//左右两边的操作数都为真,结果才为真
System.out.println(true& true);
System.out.println(false& false);
System.out.println(true& false);
System.out.println(false& true);
System.out.println("================");
//|
//左右两边的操作数只要有一个为真,结果就为真
System.out.println(true| true);
System.out.println(false| false);
System.out.println(true| false);
System.out.println(false| true);
System.out.println("================");
//^ 异或
//左右两边的操作数,相同为假,不同为真
System.out.println(true^ true);
System.out.println(false^ false);
System.out.println(true^ false);
System.out.println(false^ true);
System.out.println("================");
//!
//非真即为假,非假即为真
System.out.println(!true);
System.out.println(!false);
System.out.println("================");
//&&(短路与)
//结果跟单与一样,但是有短路现象
//左右两边的操作数 都为真,结果就为真
//短路现象,&& 前面如果有false,不论后面的操作数为真或为假,结果都为假,减少判断的逻辑
System.out.println(true&& true);
System.out.println(false&& false); //Dead code 执行不到的代码
System.out.println(true&& false);
System.out.println(false&& true);
System.out.println("================");
//||(短路或)
//结果跟单或一样,但是有短路现象
//左右两边的操作数只要有一个为真,结果就为真
//同理 ,短路现象,导致,如果第一个操作数为true,那么不论第二个操作数为true orfalse
//结果都为true
System.out.println(true|| true);//Dead code 执行不到的代码
System.out.println(false|| false);
System.out.println(true|| false);
System.out.println(false|| true);
/**
* 在eclipse中
* 黄色的线:警告 warning 可以忽略
* 红色的线:错误 异常 error,必须要解决
*/
System.out.println("================");
inta = 10;
intb = 20;
intc = 30;
System.out.println(a>c&& b>c);//?
System.out.println(a>c&& b<c);//?
System.out.println(a<c&& b>c);//?
System.out.println(a<c&& b<c);//?
}
}
7,比较运算符的演示
*==,!=,<,>,<=,>=,instanceof
*
* 所有的比较运算的返回值都为 boolean类型,要是true,要么是false
* @author jerry
*
*/
public class OperatorDemo3 {
publicstatic void main(String[] args) {
System.out.println(1==2);
System.out.println(1!=2);
System.out.println(1<2);
System.out.println(1>2);
System.out.println(1<=2);
System.out.println(1>=2);
}
}
8,