Java运算符
1. 重点: + - * / % ++ -- = == & && | || 三元运算符
+ 加号 作用:数学运算 拼接 (类型转换)
如果是字符串和数字之间做了+号操作,称为拼接,如果是数字之间的操作叫运算
连接符要注意的事项:任何类型的数据与字符串使用连接符连接时,结果都是字符串的数据类型
-(负号、减)
*(乘)
/(除):做除法时求得的结果取整
%(取余/取模):所求出的结果取余数
= 赋值 如:int a =1;
public class operator{
public static void main(String[] args){
int a =1;
int b =2;
int c = a+b;
System.out.println(c); //结果为3
String d = "Hello World";
System.out.println(d+b); //结果为Hello World2
int e = 5;
String str = e +"";
System.out.println(str);
System.out.println(e-c); //结果为 2
System.out.println(a*c); //结果为 3
System.out.println(e/b); //结果为 2
System.out.println(e%b); //结果为 1
}
}
== (等于) 比较运算符的返回结果都是布尔值(true/false)
==用于比较两个基本数据类型的时候,比较的是两个变量存储的值是否相等
==用于比较两个引用数据类型的时候,比较的是两个引用类型变量所记录的内存地址是否相等
System.out.println(5==5); //true
System.out.println(5!=5); //false
++(自增):自增就是操作数加1 前自增:++位于操作数的前面。例如:++i 后自增:++位于操作数的后面。例如:i++ ++ 在前面代表先运算后赋值,在后面代表先赋值后运算(前自增:先自增,后使用 后自增:先使用,后自增)
-- (自减):自减就是操作数减1 前自减:--位于操作数的前面。例如:--i 后自减:--位于操作数的后面。 例如:i-- -- 在前面代表先运算后赋值,在后面代表先赋值后运算(前自减:先自减,后使用 后自减:先使用,后自减)
例:
int a = 2;
a++; //相当于:a= a+1; 此时a的结果是3;
int b = a++; //1.将a的值赋值给b 2. a 本身有一个+1的动作
System.out.println(b); //此时 b的值为3
System.out.println(a); //此时 a的值为4
int a = 2;
int b = 3;
int c = 4;
int d = (a++)+(--b)+(c--);
int e = --d;
System.out.println("d="+d); //d =7
System.out.println("a="+a); //a=3
System.out.println("b="+b); //b=2
System.out.println("c="+c); //c=3
System.out.println("e="+e); //e=7
+=(加等于)
-+(减等于)
*=(乘等于)
/=(除等于)
%=(模等于)
例:
int a = 2;
int c = 3;
int d = 4;
d += c;
System.out.println("d+=c的结果是:"+d); //d+=c的结果是:7
d -= a;
System.out.println("d-=a的结果是:"+d); //d-=a的结果是:5
d *= c;
System.out.println("d*=c的结果是:"+d); //d*=c的结果是:15
d /= a;
System.out.println("d/=a的结果是:"+d); //d/=a的结果是:7
d %= a;
System.out.println("d%=a的结果是:"+d); //d%=a的结果是:1
当数值参与运算时,运算的结果默认是int类型 , 请看以下示例:
short min = 2;
short max = 4;
//short sum = min + max; //此时编译会报错(不兼容的类型: 从int转换到short可能会有损失) 原因:当数值参与运算时,运算的结果默认是int类型
//int类型的数值范围要比short要大,大类型的数据类型放不进小的数据类型;
//如果必须要放,需要强制类型转换
short sum =(short)(min + max);
//sum = sum + 1; //此时又会编译会报错(不兼容的类型: 从int转换到short可能会有损失) 原因:当数值参与运算时,运算的结果默认是int类型。
//如果写成下面两种就不会编译报错
sum +=1; // 编译不会报错 有自动强制类型转换
System.out.println(sum); //7
sum++; // 编译不会报错 有自动强制类型转换
System.out.println(sum); //8
java的逻辑运算符中,有这么四类:&&(短路与),&,|,||(短路或)
& 与&& 的区别: & & 如果前面为false 则后边的不再执行,& 无论前面表达式是true,还是false ,后边都会执行
示例:
public class demo2{
public static void main(String[] args){
//& &&
int a = 2;
int b = 3;
/*
// &
if(a++>b & ++b>a){
System.out.println("if a:"+a+" b:"+b);
}else{
System.out.println("else a:"+a+" b:"+b); //else a:3 b:4
}
*/
// &&
if(a++>b && ++b>a){
System.out.println("if a:"+a+" b:"+b);
}else{
System.out.println("else a:"+a+" b:"+b); //else a:3 b:3
}
}
}
| 与||的区别: ||如果前面为true 则后边的不再执行,| 无论前面表达式是true,还是false ,后边都会执行
示例:
// | ||
int a = 5;
int b = 8;
/* |
if(++b>a | a++>b){
System.out.println("if a:"+a+" b:"+b);//if a:6 b:9
}else{
System.out.println("else a:"+a+" b:"+b);
}
*/
if(++b>a || a++>b){
System.out.println("if a:"+a+" b:"+b);//if a:5 b:9
}else{
System.out.println("else a:"+a+" b:"+b);
三元运算符:
用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行。
使用格式:
(条件表达式)?表达式1:表达式2;
运算规则:
a) 判断条件表达式,结果为一个布尔值。
b) true,运算结果为表达式1
c) false,运算结果为表达式2
如:
int a = 10; int b = 20;
a==b?10:20; 结果为20
示例:
int a = 3;
int b = 2;
int c = 5;
/*
//用if 语句实现:
if(a>b){
if(a>c){
System.out.println(a);
}else{
System.out.println(c);
}
}else if(b>c){
System.out.println(b);
}else{
System.out.println(c);
}
*/
//三元运算实现
int result = ((a>b)? a:b)>c? ((a>b)? a:b):c;
System.out.println(result);