Java基础_运算符_4

运算符 Value
算术运算符 +,-,*,/,%,++(自增),–(自减)
赋值运算符 =
扩展赋值运算符 +=,-=,*=,/=
关系运算符 >,<,>=,<=,==,!=
逻辑运算符 &,&&,!,^,!
位运算符 &,^,~ , >>,<<,>>> (了解!!!)
条件运算符 ?:

算术运算符

 /   除法运算符 :  表示两个数相除运算  
 %   取余运算符 :  用来求余数的
public class TestOpe01{
     
        public static void main(String[] args){
     
                //打印结果:
                System.out.println(12/3);//4
                System.out.println(12%5);//2
                System.out.println(12/3.0);//4.0
                System.out.println(12%5.0);//2.0
        }
}

练习:任意给出一个四位数,求出每位上的数字并输出

import java.util.Scanner;
public class TestOpe01{
     
        public static void main(String[] args){
     
                //实现功能:任意给出一个四位数,求出每位上的数字并输出
                
                //1.任意给出一个四位数:
                Scanner input = new Scanner(System.in);
                System.out.println("请录入一个四位数:");
                int num = input.nextInt();
                
                
                //2.求出每位上的数字:
                //个位数:
                int num1 = num%10;
                //十位数:
                int num2 = num/10%10;//1234--->123--->3
                //百位数:
                int num3 = num/100%10;//1234--->12--->2
                //千位数:
                int num4 = num/1000;//1234--->1
                
                
                //3.输出每位上的数字:
                System.out.println("个位上的数为:"+num1);
                System.out.println("十位上的数为:"+num2);
                System.out.println("百位上的数为:"+num3);
                System.out.println("千位上的数为:"+num4);
        }
        
}

+的作用:
(1)表示正数
(2)表示相加操作
(3)进行字符串的拼接

public class TestOpe03{
     
        public static void main(String[] args){
     
                //表示正数:
                System.out.println(+5);//5
                //相加操作:
                System.out.println(5+6);//11
                System.out.println(5+'6');//59
                //字符串的拼接:
                //规则:+左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
                int num = 56;
                System.out.println("num="+num);//"num=56" ---> num=56
                System.out.println(5+6+"7");//11+"7"--->"117"  --->117
                System.out.println(5+'6'+"7");//59 +"7"--->"597" --->597
                System.out.println("5"+6+"7");//"56"+"7"  --->"567"--->567
                System.out.println("5"+'6'+"7");//"56"+"7"--->"567"--->567
                System.out.println("5"+'6'+'7');//"56"+'7'--->"567"---567
        }
}

自增++
·
++单独使用的时候,无论放在前还是后,都是加1操作
将++参与到运算中:规则:看++在前还是在后,如果++在后:先运算,后加1 如果++在前,先加1,后运算

				a = 5;
                int m = a++ + 7;//先运算  m=a+7  再加1:  a = a+1 
                System.out.println(m);//12
                System.out.println(a);//6
                
                a = 5;
                int n = ++a + 7;//先加1  a=a+1  再运算:  n = a+7 
                System.out.println(n);//13
                System.out.println(a);//6

自减–
和++同理

**练习:

public class TestOpe05{
     
        public static void main(String[] args){
     
                int a = 5;
                System.out.println(a++ + a++);
                System.out.println(a++ + ++a);
                System.out.println(++a + a++);
                System.out.println(++a + ++a);
        }
}

Java基础_运算符_4_第1张图片

赋值运算符 =

如int a=9;
=的作用: 将等号右侧的值赋给等号左侧:

****练习任意给出两个数,交换两个数并输出:

public class TestOpe06{
     
        public static void main(String[] args){
     
                //任意给出两个数,交换两个数并输出:
                //1.给出两个数:
                int num1 = 10;
                int num2 = 20;
                
                //2.输出交换前的两个数:
                System.out.println("交换前:"+num1+"\t"+num2);
                
                //3.交换
                	
                //解决办法:
                //引入一个中间变量:
                int t;
                t = num1;
                num1 = num2;
                num2 = t;
              
                
                //4.输出交换后的两个数:
                System.out.println("交换后:"+num1+"\t"+num2);
        }
}

交换两个数的四种方法:数据交换

扩展赋值运算符 +=,-=,*=,/=

练习:给出三个数,求和。

public class TestOpe07{
     
        public static void main(String[] args){
     
                //实现功能:给出三个数,求和:
                //1.给出三个数:
                int num1 = 10;
                int num2 = 20;
                int num3 = 30;
                //2.求和
                //int sum = num1+num2+num3;
                //定义一个变量,用来接收和:
                int sum = 0;
                sum = sum + num1;//等效:sum += num1;
                sum = sum + num2;// sum += num2;
                sum = sum + num3;//sum += num3;
                //3.将和输出:
                System.out.println("和:"+sum);
        }
}
  • a+=b 和 a=a+b 区别:
    (1)a+=b 可读性稍差 编译效率高 底层自动进行类型转换
    (2)a=a+b 可读性好 编译效率低 手动进行类型转换
  • 请问a+=b相当于a=a+b,那么也相当于 a=b+a吗?
    Java基础_运算符_4_第2张图片
  • 下面的代码哪一句出错:
			byte a = 10; 
			int b = 20;  
			a+=b;  
			a = a+b ;

第四行出错,因为a+=b可以进行自动类型转换。
把第四行改为a = (byte)(a+b);

扩展赋值运算符

就是“赋值运算符”和“算数运算符”的结合体。

+=,a += b,等效于:a = (a的数据类型)(a + (b));

-=,a -= b,等效于:a = (a的数据类型)(a - (b));

*=,a *= b,等效于:a = (a的数据类型)(a * (b));

/=,a /= b,等效于:a = (a的数据类型)(a / (b));

%=,a %= b,等效于:a = (a的数据类型)(a % (b));

关系运算符 >,<,>=,<=,==,!=

关系运算符最终结果:要么是true要么是false

public class TestOpe08{
     
        public static void main(String[] args){
     
                //>,<,>=,<=,==,!=
                //关系运算符最终结果:要么是true要么是false
                System.out.println(4>9);//false
                System.out.println(4<9);//true
                System.out.println(4>=9);//false
                System.out.println(4<=9);//true
                System.out.println(4==9);//false
                System.out.println(4!=9);//true
                System.out.println((5<9)!=(6==8));//true
        }
}

Java基础_运算符_4_第3张图片

逻辑运算符&,|,&&,||,!,^

逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false

& ······ 逻辑与 ··只要有一个操作数是false,那么结果一定是false
&& ···· 短路与··效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
| ······· 逻辑或···只要有一个操作数是true,那么结果一定是true
||········短路或··效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
!·······非····相反结果
^ ·······逻辑异或···两个操作数相同,结果为false,不相同,结果为true

public class TestOpe10{
     
        public static void main(String[] args){
     
                int i=8;
                System.out.println((5>7)&&(i++==2)); //false
                System.out.println(i);  //8 
                
                
                int a=8;
                System.out.println((5>7)&(a++==2)); //false
                System.out.println(a); //9
                
                
                int m=8;
                System.out.println((5<7)&&(m++==2)); //false
                System.out.println(m); //9
                
                int b=2;
                System.out.println((5<7)&(b++==2)); //true
                System.out.println(b);  //3
                
                int c=2;
                System.out.println((5<7)&(++c==2)); //false
                System.out.println(c);  //3
        }
}

条件运算符?:

又称为三元运算符或三目运算符

格式: a?b:c
其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b;
如果a的结果是false,那么表达式最终结果为c

public class TestOpe11{
     
        public static void main(String[] args){
     
                int num = (5>7)?6:9 ;
                System.out.println(num);
                
                String str = (4==4)?"你好":"你不好" ;
                System.out.println(str);
                
                System.out.println((4==4)?"你好":"你不好");
        }
}

练习:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的

import java.util.*;//*代表所有
public class TestOpe12{
     
        public static void main(String[] args){
     
                //实现功能:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的
                
                //1.要让男孩女孩选择晚饭吃什么:
                Scanner sc = new Scanner(System.in);
                System.out.println("请选择今晚吃什么:1.火锅 2.烧烤 3.麻辣烫 4.西餐");
                System.out.println("请男孩选择:");
                int boyChoice = sc.nextInt();
                System.out.println("请女孩选择:");
                int girlChoice = sc.nextInt();
                //2.判断:
                System.out.println(boyChoice==girlChoice?"听男孩的":"听女孩的");
        }
}

三目运算符可以代替if–else

位运算符 &,|,^,~ , >>,<<,>>>

可以看到,部分逻辑运算符和位运算符有重叠,但含义并不一样

如何区分逻辑运算符和位运算符:
逻辑运算符:左右连接的是布尔类型的操作数
位运算符:左右连接的是具体的数值

  1. << ····逻辑/算术左移 ··· 3<<3=24 ····相当于左移三位 ·····相当于乘了2的3次方
  2. 有符号右移>>比较难理解查看这个链接
  3. 无符号右移:>>>查看这个链接
  4. &与 ··1&1=1,1&0=0
  5. 异或^ 1和0,0或1异或···为1;
    ········1和1,0和0异或 ··为0Java基础_运算符_4_第4张图片
  6. 或| ······只要有1,即为1
  7. 非~ ·····非1为0,非0为1

运算符总结

Java基础_运算符_4_第5张图片

Java基础_运算符_4_第6张图片
Java基础_运算符_4_第7张图片

运算符优先级

Java基础_运算符_4_第8张图片
部分内容来源于马士兵教育赵姗姗老师的Java笔记。

你可能感兴趣的:(Java从小白开始学习,java)