算术运算符
+ 加 -减 *乘 /除 %取余
整数运算时,0不能作为除数,浮点运算时,0.0可以,但是结果无穷大
注意事项:
1、当两个整数进行除法运算时,结果只取整数部分,小数部分舍弃
2、当希望结果中保留小数部分,具体方法如下:
a.将其中一个操作数强转为double类型再做运算
b.将其中一个操作数乘以1.0提升为double类型再运算(推荐)
3、0不能作为除数,否则产生 算术异常:/by zero 。但是0.0可以作为除数但是结果无穷大,编程中尽量避免0和0.0作为除数
测试demo
public class TestAri { public static void main(String[] args) { int a = 10; int b = 4;
//打印变量值
System.out.println(a); //10
System.out.println(b); //4//相加
System.out.println(a+b); //14//相减
System.out.println(a-b); //6//相乘
System.out.println(a*b); //40//相除
System.out.println(a/b); //2//取余
System.out.println(a%b); //2
//整数相除,只取整数部分,小数舍弃
System.out.println(5/2); //2//将5先转为double类型
System.out.println((double)5/2); //2.5//将2转为double类型
System.out.println(5/(double)2); //2.5//先运算在转为都double类型
System.out.println((double)(5/2));//2.0//先用double
System.out.println(1.0 * 5/2); //2.5
//0不能作为除数
//System.out.println(5/0); // by zero at day04.TestAri//0.0作为除数结果为无穷大
System.out.println(5/0.0); //Infinity//0除以0.0结果为查无此数
System.out.println(0/0.0); //NaN Not a Number
}
}
字符串连接运算符
“+”可以实现字符串的连接。同时可以实现字符串与其他数据类型的相连
注意事项:
1、当+两边的操作数中只要有一个字符类型,则按照字符连接符类处理,结果依然是字符
2、当+两边的操作数都不是字符串时,则按照算术运算符来处理
测试demo
public class TestAri{ public static void main(String[] args) {
//当+两边的操作数中只要有一个字符类型,则按照字符连接符类处理
System.out.println(1+2+"4");
System.out.println("4"+1+2);
//当+两边的操作数都不是字符串时,则按照算术运算符来处理
System.out.println(1+2);
}
}
自增减运算符
+ 表示加法或连接 ++ 表示自增,也就是让自身的数值加1
- 表示减法 -- 表示自减,也就是让当前变量自身的数值减1
++(--)可分为前++(--)和 后++(--)
当++在前时先进行加1的操作,然后再进行其他运算
当++在后时前进行其他运算,然后再进行加1的操作
-- 同理,也就是无其他*或/等运算符参与时在前在后结果并无区别
测试demo
public class TestSelf { public static void main(String[] args) { int a = 3; System.out.println(a); //当++在后时先进行其他运算,然后再进行加1的操作 int b = a++; // 先进行将a赋值给b的操作,再进行a自增1。所以打印b得到的是a赋值的结果 System.out.println(a); //4 System.out.println(b); //3 //当++在前时先加1,进行其他运算,所以得到的是+1+a等于5 System.out.println(++a);
//当++在后时先进行打印操作,然后再+1,所以这里也是输出5
System.out.println(a++);
//这里并无算术操作,是上一个输出操作后a进行自得到的6
System.out.println(a);
//算术测试
System.out.println(a); //6
//当++在后时先进行其他运算,然后再进行加1的操作
System.out.println(a++ + ++a); // 这里是先进行
++ + ++a的运算得8,然后再a + 8 =14
System.out.println(a); //这里得到得就是上面先进性得 ++ + ++a得结果 8
}
}
赋值运算符
赋值运算符将右边表达式得运算结果赋值给左边变量得运算符
1、简单赋值
= 表示赋值运算符,用于将=右边得数据赋值给=左边得变量,覆盖改变了原来得数值
2、复合赋值
= 、+= 、-= 、*= 、/= 、%=
测试demo
public class TestAssign { public static void main(String[] args) { int a = 10; int b = 5;
//简单赋值
a = b;
System.out.println(a); // 5
//符合赋值 = 、+= 、-= 、*= 、/= 、%=
a /= b;
System.out.println(a); //此时上个运算已将b赋值给a,所以a /= b等于 5/5得1
}
}
比较运算符
比较运算符是用来判断两个表达式或值大小得关系运算符
> 表示是否大于
< 表示是否小于
== 表示是否等于
<= 表示是否小于等于
!= 表示是否不等于
>= 表示是否大于等于
关系运算符参与得表达式最终结果为boolean类型, True(真)和False(假)
测试demo
public class TestRelation { public static void main(String[] args) { int a = 3; int b = 5;
// >、 <、 、 <=、 !=、 >=
System.out.println(a>b); //False
System.out.println(a<b); //True
System.out.println(ab); //False
System.out.println(a<=b); //True
System.out.println(a!=b); //True
System.out.println(a>=b); //False
}
}
逻辑运算符
逻辑运算符操作数为boolean表达式
java提供的逻辑运算符有 &&(与) ||(或) !(非)
&&(与) 表示逻辑与运算符,相当于“并且”,同真为真,一假为假
||(或) 表示逻辑或运算符,相当于“或者”,一真为真,同假为假
!(非) 表示逻辑非运算符,相当于“取反”,真为假,假为真
&& 和 || 具备短路的特性:如果通过第一个表达式的是即可得出最后的结果则不计算第二个表达式
短路的特性:
&&:若第一个条件为假则整个表达式一定为假,此时跳过第二个条件的执行
|| : 若第一个条件为真则整个表达式一定为假,此时跳过第二个条件的执行
测试demo
public class TestLogic { public static void main(String[] args) { int a = 5; //判断a是否大于10并且小于99,如果满足返回true,否则返回false System.out.println(a>=10 && a<=99);
boolean b = false; boolean c = true; //&&(与) 表示逻辑与运算符,相当于“并且”,同真为真,一假为假。 System.out.println(b && c); //b是假,只要其中一个是假就返回假 //||(或) 表示逻辑或运算符,相当于“或者”,一真为真,同假为假 System.out.println(b || c); //c是真,只要有一个是真就返回真 //!(非) 表示逻辑非运算符,相当于“取反”,真为假,假为真 System.out.println(!b); System.out.println(!c); System.out.println("-----------------------"); int d = 3; int e = 2; //短路的特性:&& 若第一个条件为假则整个表达式一定为假,此时跳过第二个条件的执行 boolean d1 = (++d == 3 && ++e ==3); //第一个为假,所以跳过第二个表达式。返回false System.out.println(d1); //false System.out.println(d); //4 System.out.println(e); //2 System.out.println("-----------------------"); //短路的特性:|| 若第一个条件为真则整个表达式一定为假,此时跳过第二个条件的执行 boolean d2 = (++d == 5 || ++e ==3); //第一个为真,所以跳过第二个表达式。返回false System.out.println(d2); //false System.out.println(d); //4 System.out.println(e); //2 }
}
条件/三目运算符
语法格式
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B
执行流程
判断条件是否成立
若成立为ture,将表达式A的值赋值给左侧的变量
若不成立为false,将表达式B的值赋值给左侧的变量
注意事项:
1、必须同时保证表达式A和表达式B都符合左侧数据类型的要求
2、三元运算符的结果必须被使用
测试demo
public class TestThreeEye {
public static void main(String[] args) {
int a = 10;
int b = 20;
//数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B
int max = a > b ? a : b;
System.out.println("最大值是:"+max);
//注意:必须同时保证表达式A和表达式B都符合左侧数据类型的要求
//int result = 3 > 4 ? 2.5 : 4;//Error:(13, 28) java: 不兼容的类型: 从double转换到int可能会有损失
//注意:三元运算符的结果必须被使用
//System.out.println(a > b ? a : b);//直接输出是正确写法
//a > b ? a : b;//不是语句,错误写法
}
}