2.4运算符
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三元运算符
2.4.1算数运算符
% 取余
++ 自增(前):先运算后取值
++ 自增(后):先取值后运算
-- 自减(前):先运算后取值
-- 自减(后):先取值后运算
- 字符串连接,正好,加
```
/*运算符之一:算数运算符 - / ++ --
*/
class AriTest {
public static void main(String[] args) {
//除号:/
int num1 = 12;
int num2 = 5;
int result = num1 / num2;
System.out.println(result);//2
int result2 = num1 / num2 * num2;
System.out.println(result2);//10
double result3 = num1 / num2;
System.out.println(result3);//2.0
double result4 = num1 / (num2 + 0.0);
System.out.println(result4);
double result5 = (double)num1/num2;
// %:取余运算
//结果的符号与被模数的符号相同
//开发中,经常使用%来判断能否被除尽的情况
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1);
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2);
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3);
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4);
//(前)++ :先自增1,然后再运算
//(后)++ :先运算,再自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " + a1 + ",b1 = " +b1);
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " + a2 + ",b2 = " +b2);
int a3 = 10;
a3++;
int b3 = a3;
//注意点:
short s1 = 10;
//s1 = s1 + 1; 编译失败
//s1 = (short)(s1 + 1);正确的
s1++;//自增1不会改变本身变量的数据类型
//问题:
byte bb1 = 127;
bb1++;
System.out.println("bb1 = " + bb1);
//(前)--:先自减1后运算
//(后)--:先运算后自减1
int a4 = 10;
int b4 = --a4;
System.out.println("a4 = " + a4 + ",b4 = " + b4);
}}
测试小题
/*
随机给出一个三位数整数,打印显示它的个位数,十位数,百位数的值
格式如下:
数字×××的情况如下:
个位数:
十位数:
百位数:
*/
class AriExer {
public static void main(String[] args) {
int num = 187;
int bai = num/100;
int shi = num % 100 / 10;//int shi = num / 10 % 10;
int ge = num % 10;
System.out.println("百位为:" + bai);
System.out.println("十位为:" + shi);
System.out.println("个位为:" + ge);
}}
## 2.4.2 运算符:赋值运算符 符号 = ## 2.4.3比较运算符
运算符之二:赋值运算符
= += -= *= /= %=
*/
class SetValueTest {
public static void main(String[] args) {
//赋值符号
int i1 = 10;
int j1 = 10;
int i2,j2;
//连续赋值
i2 = j2 = 10;
int i3 = 10,j3 = 20;
//*******************
int num1 = 10;
num1 += 2;// num1 = num1 + 2;
System.out.println(num1);//12
int num2 = 12;
num2 %= 5;//num2 % 5;
System.out.println(num2);
short s1 =10;
//s1 = s1 + 2;//编译失败
s1 +=2;//不会改变变量本身的数据类型
//开发中,如果希望变量实现+2的操作,有几种方法 int num = 10;
//方式一:num = num + 2
//方式二:num += 2(推荐)##2.4.4 逻辑运算符 运算符之三:比较运算符 == != > < >= <= instanceof 结论: 1.比较运算符的结果是boolean类型 2.区分 == 和 =
/*
运算符之四:逻辑运算符
& && | || ! ^
说明:
1.逻辑运算符操作的都是boolean类型的变量
*/
class LogicTest {
public static void main(String[] args) {
//区分& 与 &&(与)
//相同点1:&与&&运算结果相同
//相同点2:当符号左边是true时,二者都会执行符号右边的运算
//不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算
boolean b1 =true;
b1 = false;
int num1 = 10;
if (b1 & (num1++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num1 = " + num1);
boolean b2 =true;
b2 = false;
int num2 = 10;
if (b2 && (num2++ > 0)){
System.out.println("我现在在北京");
}
else{
System.out.println("我现在在南京");
}
System.out.println("num2 = " + num2);
//区分:|与||(或)
//相同点1:|与||运算结果相同
//相同点2:当符号左边是false时,两者都会执行符号右边的运算
//不同点:当符号左边时true时,|会继续执行右边的运算,||不执行
//开发中推荐使用||
boolean b3 = false;
b3 = true;
int num3 = 10;
if (b3 | (num3++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num3 = " + num3);
boolean b4 = false;
b4 = true;
int num4 = 10;
if (b4 || (num4++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num4 = " + num4);
}}
2.4.5位运算符
<<左移 左移一位 *2 >>右移 >>>无符号右移 无论正负,右移后都补0 &与运算 |或运算 ^异或运算 ~取反运算
1.位运算符操作的都是整型的数据
2.“<<”在一定范围内,每向左移一位,相当于 * 2,"<<"每向右移一位,相当于 / 2
面试题:最高效的计算2*8? 2<<3 或8<<1
3.m = (m ^ n) ^ n
2.4.6 三元运算符
/*
运算符之六:三元运算符
1.结构:(条件表达式)?表达式1:表达式2
2.说明
①条件表达式的结果为一个布尔类型变量
②根据条件表达式的真或假决定执行表达式1还是2
如果表达式为true,则执行表达式1
如果表达式为false,则实行表达式2
③表达式1和表达式2要求是一致的
④三元运算符可以嵌套使用
3.凡是可以使用三元运算符的地方,都可以改写为if-else
反之,不成立
4.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符,原因:简洁,执行效率高
*/
class SanYuanTest
{
public static void main(String[] args)
{
//获取两个整数的较大值
int m = 12;
int n = 5;
int max = (m > n) ? m : n ;
System.out.println(max);
double num = (m > n)?2:1.0;
//******************
String maxStr = (m > n)?"m大":((m == n)?"m和n相等":"n大");
System.out.println(maxStr);
//*************
//获取三个数的最大值
int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1 > n2)?n1:n2;
int max2 = (max1 > n3)?max1 : n3;
System.out.println("三个数的最大值为:" + max2);
}
}
2.5 程序流程控制
顺序结构
程序从上到下逐行执行
分支结构
循环结构
2.5.1 if-else
/*
分支结构中的if-else(条件判断结构中)
一、三种结构
第一种:
if(条件表达式){
执行表达式
}
第二种:
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
第三种:n选一
if(条件表达式){
执行表达式1
}else if{
执行表达式2
}else if{
执行表达式3
}
.....
else{
执行表达式n
}
*/
class IfTest{
public static void main(String[] args) {
//举例1
int heartBeats = 79;
if (heartBeats < 60 || heartBeats > 100){
System.out.println("需要做进一步检查");
}
System.out.println("检查结束");
//举例2
int age = 23;
if(age < 18){
System.out.println("你可以多看点动画片");
}else {
System.out.println("1111111");
}
//举例3
if(age < 0){
System.out.println("您输入的数据非法");
}else if(age < 18){
System.out.println("青少年时期");
}else if (age < 35){
System.out.println("青壮年时期");
}else if (age < 60){
System.out.println("中年时期");
}else if (age < 120){
System.out.println("老年时期");
}else{
System.out.println("成仙");
}
}
}

京公网安备 11010502036488号