跟着老于学Java的第四天!
java中的运算符:
算术运算符: +,-,*,/,%,++,--
赋值运算符 =
一个等号=是赋值,两个等号==是关系运算符
扩展赋值运算符:+=,-=,*=,/=
关系运算符: >,<,>=,<=,==,!=
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>>
public class OperatorDemo{
public static void main(String[] args){
//算数运算符
int a = 1;
int b = 2;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
//取整除,或者取商
System.out.println(a / b);
//取余数,或者取模
System.out.println(a % b);
System.out.println("==================");
//获取一个4位数的个位数、十位数、百位数、千位数各是多少?
int num = 4567;
System.out.println("千位数是:" + (num / 1000));
System.out.println("百位数是:" + ((num / 100) % 10));
System.out.println("十位数是:" + ((num % 100) / 10));
System.out.println("个位数是:" + (num % 10));
System.out.println("==================");
++:单目运算符,自加1的操作,如果放在前面,先自加,再参加运算
如果放在后面,先参加运算,再自加
--:单目运算符,自减1的操作,如果放在前面,先自减,再参加运算
如果放在后面,先参加运算,再自减
基本数据类型的转换:
bb是byte类型,bb+2中的2是int类型,byte和int都属于整型,也就是说是同一种数据类型,
那么byte会自动向int类型转换,所以=右边最终返回的是int类型,而等号左边是byte类型,
我们知道赋值运算符是从右向左赋值,换句话说,这里面就是int类型向byte类型转换,就是高位
向低位进byte bb = 10;
//bb = (byte)(bb + 2);
bb += 2;
System.out.println(bb);
//关系运算符
System.out.println(4 > 5);
System.out.println(4 < 5);
System.out.println(4 >= 5);
System.out.println(4 <= 5);
System.out.println(4 == 5);
System.out.println(4 != 5);行转换,必须是用强制转换。 语法:(datatype)
逻辑运算符:
&&:短路与,自左向右执行,如果第一个表达式返回false,那么后面的表达式就不再执行
&:逻辑与,自左向右执行,不管第一个表达式返回true还是false,后面表达式都会执行
||:短路或,自左向右执行,如果第一个表达式返回true,那么后面的表达式就不再执行
|:逻辑或,自左向右执行,不管第一个表达式返回true还是false,后面表达式都会执行
>>:有符号右移,对正数而言,右移几位就是除几个2
<<:有符号左移,对正数而言,左移几位就是乘几个2
>>>:无符号右移
条件运算符:又叫三目运算符
当第一个表达返回为true,则取?后面的值,第一个表达式返回为false,则取:后面的值
基本数据类型之间的转换:
1、自动转换(隐式转换)
赋值运算符=左边数据范围大,右边数据范围小,并且一般是同一种数据类型的情况下,则会发生自动转换
2、强制转换
赋值运算符=左边数据范围小,右边数据范围大,并且一般是同一种数据类型的情况下,则必须使用强制转换
语法:(datatype)
强制转换可能会有数据精度的丢失
byte a1 = 2;
a1 = (byte)(a1 + 10);
System.out.println(a1);
System.out.println((byte)270);//14