Java_从入门到JavaEE_03

一、运算符

1.算数运算符

  1. 算数运算符的使用

  2. 符号:+ , - , * , / , % , ++ , –

    ​ 加、减、乘、除、求余、自增、自减

    ++a与a++:++a:先自增1,再使用

    ​ a++:先使用,再自增1

    自减同理

  3. 特殊点

    特殊点1:byte做运算,会向上转型成int,再做运算

    特殊点2:short做运算,会向上转型成int,再做运算

    特殊点3:除了byte和short做运算会转型成int,其他数值类型做运算会按照取值范围大的类型转型后再做运算

    特殊点4:浮点类型做运算可能会失去精度,失去精度问题可以使用BigInteger或BigDecimal去解决

    特殊点5:++a; 和 a++; 没有区别,因为分号为执行语句的结束符,不管先加还是后加都给我自增1

    特殊点6:++底层会强转

    特殊点7:char类型可以做算数运算

    特殊点8:boolean不能与其他类型兼容

  4. 转型原理:1.自动转型使用最高位补位

    ​ 2.强制转型从最高位开始舍弃

		//转型原理:
		byte b1 = 10;
		byte b2 = 20;
		//自转:b1 - byte:0000,1010
		//	    	 int:0000,0000,0000,0000,0000,0000,0000,1010
		//自转:b2 - byte:0001,0100
		//			 int:0000,0000,0000,0000,0000,0000,0001,0100
		//			 int:0000,0000,0000,0000,0000,0000,0001,1110
		//强转:	(byte):0001,1110
		byte result = (byte)(b1 + b2);
		System.out.println(result);
  1. ArithmeticException - 算数异常

    在做除法运算时当被除数为0时会报算数异常

2.赋值运算符

  1. 赋值运算符

    符号:=、+=、-=、*=、/=、%=

    注意:其中"="为赋值运算符,及将右边的值赋值给左边的变量

  2. 赋值举例:

		int num = 10;

		num += 5;//num = (int)(num+5);
		num -= 5;//num = (int)(num-5);
		num *= 5;//num = (int)(num*5);
		num /= 5;//num = (int)(num/5);
		num %= 3;//num = (int)(num%3);
		
		System.out.println(num);
  1. 赋值规则:

       	s   += 1                s  = (short)((s)  +    (1))
    

    复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型。

3.关系运算符

  1. 符号:==、!=、>、>=、<、<=

  2. 注意:

    ==判断两个值是否相等

    !=判断两个值是否不相等

    关系运算符的结果必须是boolean

4.字符串拼接符

  1. 符号:+

  2. 注意:

    +两侧都是数值,该符号为算数运算符

    +两侧有一侧或两侧是字符串,该符号为字符串拼接符

5.逻辑运算符

  1. 符号:

    ​ &与 &&短路与

    ​ |或 ||短路或

    ​ ^异或

    ​ !非

  2. 注意:

    1.逻辑运算符运行结果都是boolean类型

    2.&、&&、|、||、^ 两侧都是boolean类型数据,!后面跟boolean类型数据

  3. &与:前后两侧都是boolean值,两侧都为true,结果才为true

    		System.out.println(true & true);//true
    		System.out.println(false & true);//false
    		System.out.println(true & false);//false
    		System.out.println(false & false);//false
    
  4. &&短路与:前后两侧都是boolean值,两侧都为true,结果才为true

    		System.out.println(true && true);//true
    		System.out.println(false && true);//false
    		System.out.println(true && false);//false
    		System.out.println(false && false);//false
    
  5. & 与 && 的区别

    &与:判断前者为false后,还会判断后者

    &&短路与:判断前者为false后,不会判断后者,直接返回false,所以效率更高

    		System.out.println(false & 10/0>3);//会报算数异常
    		System.out.println(false && 10/0>3);//输出false
    
  6. |或:前后两侧都是boolean值,两侧有为true,结果就为true

    		System.out.println(true | true);//true
    		System.out.println(false | true);//true
    		System.out.println(true | false);//true
    		System.out.println(false | false);//false
    
  7. ||短路或:前后两侧都是boolean值,两侧有为true,结果就为true

    		System.out.println(true || true);//true
    		System.out.println(false || true);//true
    		System.out.println(true || false);//true
    		System.out.println(false || false);//false
    
  8. | 与 ||的区别

    |或:判断前者为true后,还会判断后者

    ||短路或:判断前者为true后,不会判断后者,直接返回true,所以效率更高

    		System.out.println(true | 10/0>3);//会报算数异常
    		System.out.println(true || 10/0>3);//输出false
    
  9. ^异或:前后两侧都是boolean值,两侧相同为false,不同为true

    		System.out.println(true ^ true);//false
    		System.out.println(false ^ true);//true
    		System.out.println(true ^ false);//true
    		System.out.println(false ^ false);//false
    
  10. !非:置反

    		boolean bool1 = true;
    		System.out.println(!bool1);//false
    		
    		boolean bool2 = false;
    		System.out.println(!bool2);//true
    

6.三目运算符

  1. 语法规则:变量 = (表达式)?值1:值2;

    表达式:如 5+6 算数表达式
    5>6 关系表达式

  2. 理解:三目运算的本质是对表达式进行判断并输出值,所以表达式的结果必须是boolean值

    ​ true - 将值1赋值给变量

       false- 将值2赋值给变量
    
    			int a=10;
    			int b=20;
    			int num = (a>b)?a:b;
    			System.out.println(num);//num=20
    
  3. 举例:在控制台输入三个int类型的数据,判断大小,由小到大输出

    import java.util.Scanner;
    	public class Test{	
    		public static void main(String[] args){
    			Scanner scan = new Scanner(System.in);
    		
    			System.out.println("请输入第一个数字:");
    			int a = scan.nextInt();
    			System.out.println("请输入第二个数字:");
    			int b = scan.nextInt();
    			System.out.println("请输入第三个数字:");
    			int c = scan.nextInt();
    			
    			//最大值
    			int max = (a>b)?a:b;//int max =((a>b)?a:b)>c)?((a>b)?a:b):c;
    			max = (max>c)?max:c;
    			
    			//最小值
    			int min = (a<b)?a:b;//int min =((a<b)?a:b)<c)?((a<b)?a:b):c
    			min = (min<c)?min:c;
    			
    			//中间值
    			int mid = a+b+c-max-min;
    			
    			System.out.println(min + "<" + mid + "<" + max);
            }
    	}
    
  4. 三目运算符返回值规则:

    1.值1和值2都是常量的情况,按照取值范围大的类型返回数据

    2.值1和值2都是变量的情况,按照取值范围大的类型返回数据

    3.值1和值2一个是常量一个是变量的情况,判断常量是否在变量所属类型的取值范围里

    ​ 在 - 按照变量类型返回数据

    ​ 不在-按照常量类型返回数据

7.位运算符

  1. 符号:

    &与 |或 ^异或

    << 左移

    >> 右移

    >>> 无符号位右移

  2. 理解:

    将十进制的数据转换为二进制再做运算

    1. &与:同位比较,两者为1,结果才为1
		byte a=19,b=23;
		System.out.println(19 & 23);//0000 0000 0000 0000 0000 0000 0001 0011   19
									//0000 0000 0000 0000 0000 0000 0001 0111   23
									//0000 0000 0000 0000 0000 0000 0001 0011   19
  1. |或:同位比较,两者有1,结果就为1
		byte a=19,b=23;
		System.out.println(19 | 23);//0000 0000 0000 0000 0000 0000 0001 0011   19
									//0000 0000 0000 0000 0000 0000 0001 0111   23
									//0000 0000 0000 0000 0000 0000 0001 0111   23
  1. ^异或:同位比较,两者相同为0,不同为1
		System.out.println(19 ^ 23);//0000 0000 0000 0000 0000 0000 0001 0011   19
									//0000 0000 0000 0000 0000 0000 0001 0111   23
									//0000 0000 0000 0000 0000 0000 0000 0100   4

​ 注意:
​ &、|、^前后两侧都是数值,该符号为位运算符
​ &、|、^前后两侧都是boolean值,该符号为逻辑运算符

  1. <<左移:整体向左移动n位,就用n个0补到最低位

    左移一位相等于乘2

		System.out.println(3 << 2);//0000 0000 0000 0000 0000 0000 0000 0011   3
								   //0000 0000 0000 0000 0000 0000 0000 1100   12
  1. >>右移:整体向右移动n位,就用n个符号位补到最高位

    右移一位相等于除2

		System.out.println(3 >> 2);//0000 0000 0000 0000 0000 0000 0000 0011   3
								   //0000 0000 0000 0000 0000 0000 0000 0000   0
  1. >>>无符号位右移:

注意:无符号位右移和右移在处理正数的情况下没有区别,负数用0补位。

		System.out.println(-3 >>> 1);//1111 1111 1111 1111 1111 1111 1111 1111 1101   -3
								     //0111 1111 1111 1111 1111 1111 1111 1111 1110   2,147,483,646

8.运算符的优先级别

在这里插入图片描述

**注意:**不要死记,灵活使用小括号。

二、Scanner类(浅用)

  1. 类:是一个抽象的概念,在现实中并不存在。

  2. Scanner类:Java给我们提供的专门用于在控制台输入数据的类、

    使用步骤:

    1. 导包:import java.util.Scanner;
    2. 创建对象:Scanner scan = new Scanner(System.in);
    3. 调用方法(功能):int num = scan.nextInt();

    细节:

    1. 使用Java提供的类需要在java文件中的第一行导入包

    2. 使用功能必须要先创建对象

    3. 创建对象 类型 引用 = 新建的对象

      Scanner scan = new Scanner(System.in);

    4. 方法介绍:调用方法必须使用对象所对应的引用进行调用

      int num = scan.nextInt();

      在窗口输入一个整数类型数字并赋值给程序中的num变量

      double num = scan.nextDouble();

      在窗口输入一个浮点类型数字并赋值给程序中的num变量

      String str = scan.next();

      在窗口输入一个字符串并赋值给程序中的str变量

    5. 方法调用几次,就可以在窗口输入几次

//导包
   import java.util.Scanner;
   
   public class Test{
   
   	public static void main(String[] args){
   	
   		//创建Scanner类的对象
   		//类  类名 = 新建 类();
   		Scanner scan = new Scanner(System.in);
   		
   		System.out.println("请输入int类型的数据:");
   		int i = scan.nextInt();//用户可以在控制台输入数据,并把数据赋值给i
   		
   		System.out.println("请输入double类型的数据:");
   		double d = scan.nextDouble();
   	
   		System.out.println("请输入字符串类型的数据:");
   		String str = scan.next();
   		
           //输出
   		System.out.println(i);
   		System.out.println(d);
   		System.out.println(str);
   	}
   }
  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值