第3章_运算符

目录

一、Java中的运算符

二、算数运算符

1./和%

2.+

3.++

三、赋值运算符

四、扩展赋值运算符

五、关系运算符

六、逻辑运算符

七、条件运算符

八、位运算符(了解)

九、运算符总结

十、运算符的优先级别


一、Java中的运算符

【1】Java 语言支持如下运算符:
算术运算符   
 +,-,*,/,%,++(自增),--(自减)
赋值运算符 
 =  
扩展赋值运算符
 +=,-=,*=,/=
关系运算符
 >,<,>=,<=,==,!=
逻辑运算符
&,|,    &&,||,!,^
位运算符
 &,|,^,~ , >>,<<,>>> (了解!!!)
条件运算符
?:
【2】相关概念辨析
+        运算符  操作符         Operator
5+6    表达式                     expression
5  6     操作数                     Operand
int m =5+6;    语句             Sentence

二、算数运算符

1./和%

/     :除法运算符 , 表示两个数相除的商  
%   :取余运算符,  表示两个数相除的余数

//输入一个四位数,分行输出各个位数.

import java.util.Scanner;
public class F1121103{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个四位数");
		int num = sc.nextInt();
		int num1 = num%10;
		int num2 = num/10%10;
		int num3 = num/100%10;
		int num4 = num/1000%10;
		System.out.println("个位数是:"+num1);
		System.out.println("十位数是:"+num2);
		System.out.println("百位数是:"+num3);
		System.out.println("千位数是:"+num4);
	}
}

2.+

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

3.++

无论这个变量是否参与到运算中去,只要用++运算符,这个变量本身就加1操作
只是说如果变量参与到运算中去的话,对运算结果是产生影响:
看++在前还是在后,如果++在后:先运算,后加1   如果++在前,先加1,后运算
 

public class TestOpe04{
        public static void main(String[] args){
                int a = 5;
                a++;//理解为:相当于  a=a+1 操作  
                System.out.println(a);//6
                
                a = 5;
                ++a;//理解为:相当于  a=a+1 操作  
                System.out.println(a); //6
                
                //总结:++单独使用的时候,无论放在前还是后,都是加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);
        }
}

 效果

三、赋值运算符

=的作用: 将等号右侧的值赋给等号左侧:
int age = 19;
int age = 10+3+8;

四、扩展赋值运算符

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     可读性好  编译效率低   手动进行类型转换
   面试题
(1)请问a+=b相当于a=a+b,那么也相当于  a=b+a吗?

下面的代码哪一句出错:  

byte a = 10; 
int b = 20; 
a+=b; 
a = a+b ;

第4句错了,更正:  a = (byte)(a+b);

五、关系运算符

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
        }
}

六、逻辑运算符

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

public class TestOpe09{
        public static void main(String[] args){
                // 逻辑与 :& 规律:只要有一个操作数是false,那么结果一定是false
                System.out.println(true&true);
                System.out.println(true&false);
                System.out.println(false&false);
                System.out.println(false&true);
                
                // 短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式
//就不用计算了,结果一定是false
                System.out.println(true&&true);
                System.out.println(true&&false);
                System.out.println(false&&false);
                System.out.println(false&&true);
                
                // 逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
                System.out.println(true|true);
                System.out.println(true|false);
                System.out.println(false|false);
                System.out.println(false|true);
                
                // 短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式
//就不用计算了,结果一定是true
                System.out.println(true||true);
                System.out.println(true||false);
                System.out.println(false||false);
                System.out.println(false||true);
                
                //逻辑非:   !  规律:相反结果
                System.out.println(!true);//false
                System.out.println(!false);//true
                
                //逻辑异或: ^  规律:两个操作数相同,结果为false,不相同,结果为true
                System.out.println(true^true);
                System.out.println(true^false);
                System.out.println(false^false);
                System.out.println(false^true);
        }
}

七、条件运算符

【1】条件运算符:又称:  三元运算符/三目运算符
【2】格式:
  a?b:c
其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b
如果a的结果是false,那么表达式最终结果为c
 

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?"听男孩的":"听女孩的");
        }
}

PS:三目运算符可以代替后续我们要学习的if-else 

八、位运算符(了解)

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

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

【1】<<   左移 
  3<<2 = 12

 面试题: 4乘以8最快的方式:  4<<3 

【2】>> 有符号右移

6>>2 = 1

 同样是连除两个2

-6>>2 = -2


【3】>>> 无符号右移:
6>>>2  = 1
 【4】 & 与
6&3 = 2

【5】| 或
6|3=7

 【6】^异或:
6^3 = 5

【7】~反:
~6  = -7

PS:

byte类型的表数范围的 -128是怎么算出来的 
127: 01111111
-128:  10000000
一看就是个负数
减1:    01111111
取反:   10000000  ---》2^7  = 128
加负号:  -128

九、运算符总结

十、运算符的优先级别

不需要去刻意的记优先级关系
赋值<三目<逻辑<关系<算术<单目
理解运算符的结合性

PS:实际开发中我们不会写特别复杂的表达式,你要想先算谁就用()

案例:
   5<6 | 'A'>'a' && 12*6<=45+23&&!true
=5<6 | 'A'>'a' && 12*6<=45+23&&false
= 5<6 | 'A'>'a' &&72<=68&&false
= true|false&&false&&false
= true&&false&&false
=false&&false
=false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值