目录
运算符
两个原则:
1、不同类型的数据做运算时,一定会先转换成较大范围类型后再进行运算。
2、byte,short,char这些类型运算时,一定会先转成int类型再运算,结果int类型
一定要注意封闭式运算。
算术运算符
+,-,*,/,%,++,--
编程中的+,-,*和我们平时用到的几乎没什么区别,这里就不介绍了
/ :除号
情况1:
参与的类型都是整型时,做取整运算,即商n余m, 结果为n2/3----商0余2。结果为0(也就是运算结果只保留整数位)
情况2:
只要有一个浮点数参与,就会做类似精确运算(在除2是会是精确运算)。
%:取余运算符号,也叫取模运算符号
做除法运算时,商n余m,结果为m.
情况1:参与运算都是整数时,余数是精确值
情况2: 有浮点数参与时,余数不一定是精确值。
注意:
取余运算一般被用来判断 某一个数能否被另外一个数整除。
被除数为正,取余结果一定为正
被除数为负,取余结果一定为负。
++ / --:是自增自减运算符
符号要与变量一起使用。表示变量自动+1,或自动-1;
列:++a/a++/--a/a--;
++a/a++:是a=a+1的简写
--a/a--:是a=a-1的简写
情况1: 即与变量在一起,不与其他任何符号连用时
(单独使用)
++a
a++
--a
a--
此时,变量一定会+1或-1;
情况2:自增/自减运算与其他符号连用时
需要考虑表达式的值。
++a/a++/--a/a--整体看成表达式
口诀:
符号在前,先运算再赋值
符号在后,先赋值在运算
解析:符号在前时,变量先自增/自减,新值赋值给表达式
符号在后时,先把变量的值赋值给表达式,然后变量再自增/自减
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。
关系运算符
>,>=,<,<=,==,!= ,它们所表达的意思与数学中的用法一致,用来判断条件是否成立。一般都用在分支结构或循环结构中
逻辑运算符
当有两个条件以上进行判断是否成立时,需要使用逻辑运算符。即与,或,非 (&&,||,!)
数学中,判断a是否大于1并且小于3时,写法如下:1<a<3 java语言中,没有上述写法,需要使用&&写法如下:a>1&&a<3或a<3&&a>1
&&(与):用于判断两个条件是否同时成立。(全真为真,一假则假)
||(或):用于判断是否有条件成立。(一真即真,全假则假)
!(非):用于条件的否定。(非真即假,非假即真)
逻辑运算符又称之为短路运算符,当使用&&或者||时,第一个条件能确定结果时,就不会执行第二个条件,这种行为可视为短路现象。(单个符号的 &(与) |(或) 没有短路现象。)
赋值运算符
=,赋值运算,给前面的变量赋值。
扩展:
+=,-=,*=,/=,%=
a+=1相当于 a = a + 1
a-=b相当于 a = a - b;
a*=b相当于 a = a * b;
a/=b相当于 a = a / b;
a%=b相当于 a = a % b;
字符串拼接符号
+: 当+前后,只要有一个是字符串类型,就做拼接操作,拼接后的结果是字符串类型。
练习代码:
public static void main(String[] args) {
int a = 1;
int b = 2;
String str = "3";
String result = a+b+str;
System.out.println(result);//"33"
result = str+a+b;
System.out.println(result);//"312"
result = a+str+b;
System.out.println(result);//"132"
System.out.println(1+2+a+str+b+3);//"4323"
System.out.println(1+2+a+"3"+a*b+str);//"4323"
}
三目运算符
变量类型 变量= 条件表达式?值1:值2;
变量类型:需要与值1或值2的类型相同。如果值1与值2的类型不相同,则要可以自动转换。
练习代码:
public static void main(String[] args){
/*
找出num1 = 3,num2 = 5最大值
*/
int num1 = 3,num2 = 5;
int numMax = num1>num2? num1:num2;
/*
int a = 5,b = 10,c = 3;
找出max,mid,min
*/
int a = 5,b = 10,c = 3;
int min = a<b? (a<c? a:c):(b<c? b:c);
int max = a>b? (a>c? a:c):(b>c? b:c);
int mid = a>b? (b>c? b:(a>c? c:a)):(a>c? a:(b>c? c:b));
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
System.out.println("中间值:"+mid);
}