运算符的使用

目录

  • 一、算术运算符
  • 二、赋值运算符
  • 三、关系运算符
  • 四、逻辑运算符
  • 五、Scanner类
  • 六、三目运算符
  • 七、字符串拼接符
  • 八、位运算符

一、算术运算符

+(加):System.out.println(10+5);  //15

-(减):System.out.println(10-5);    //5

*(乘):System.out.println(10*5);    //50

:/(除):System.out.println(10/5);    //2

%(模):System.out.println(10%5); (取余数)    //0

++(自增):在自身的基础上加1

(1)++a:先自增1,再使用;

int a = 10;
System.out.println(++a);   //11
System.out.println(a);    //11

(2)a++::先使用,再自增1.

int  a= 10;
System.out.println(a++);    //10
System.out.println(a);     //11

--(自减):在自身的基础上减1

(1)--a:先自减1,再使用;

int a = 10;
System.out.println(--a);    //9
System.out.println(a);     //9

(2)a--:先使用,再自减1 .

int  a 10;
System.out.println(a--);    //10
System.out.println(a);     //9

特殊点:

(1)两个byte类型做运算,会向上转型成int类型再做运算;;

(2)两个short类型做运算,会向上转型成int类型再做运算

(3)除了byte和short类型做运算时会向上转型成int外,其余的数值型都会按照取值范围大的类型先转型再做运算;

(4)浮点类型做运算符底层会对阶,可能导致失去精度;对于敏感信息(金额)不要使用浮点类型直接做运算;

(5)char类型可以做运算,先获取字符的ASCII,再做运算;

(6)++num1; 和 num2++; 没有区别,因为;表示执行语句的结束,不管先加还是后加都要加;

(7)++num的底层原理:

​byte num = 10;
++num;   //底层:num = (byte)(num+1);
System.out.println(num);    //11

(8)num++的底层原理:(可以反编译看看)

int i = 0;   
i = i++; 
//底层分析:
//int temp = i;  //temp记录了i的初始值 -- 0
//i = (int)(i+1);//i --> 1
//i = temp;  //将temp中记录i的初始值(0)赋值给i
				
System.out.println(i);  //0

二、赋值运算符

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

=:赋值号,将赋值号右边的值赋值给左边

+=、-=、*=、/=、%= 叫做复合运算

+=(加等于):

​int num = 10;
num += 20;    //num = (int)(num+20);
System.out.println(num);    //30

-=(减等于):

int num = 10;
num -= 20;   //num = (int)(num-20);
System.out.println(num);    //-10

*=(乘等于):

int num = 10;
num *= 20;   //num = (int)(num*20);
System.out.println(num);    //200

/=(除等于):

int num = 20;
num =/ 10;   //num = (int)(num/10);
System.out.println(num);    //2

%=(模等于):

int num = 10;
num %= 3;   //num = (int)(num%3);
System.out.println(num);    //1

三、关系运算符

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

注意:

(1)=为赋值号,==判断值是否相等;(字符串不能使用==,使用.equals(" "))

(2)!= 判断值是否不相等;

(3)! 不要写成中文的感叹号;

(4)关系运算符的结果都是boolean

System.out.println(10 == 10);   //true
System.out.println(10 != 10);   //false
System.out.println(10 >  20);   //false
System.out.println(10 >= 20);   //false
System.out.println(10 <  20);   //true
System.out.println(10 <= 20);   //true
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);    //==判断两个boolean是否相等
System.out.println(b3);    //false
				
boolean b4 = (b1 = b2);    //将b2赋值给b1,再将b1赋值给b4
System.out.println(b4);    //false

四、逻辑运算符

&(与):前后两个条件都成立(true),结果才成立;

                 判断前者为false后,还会判断后者。

&&(短路与):前后两个条件都成立(true),结果才成立;

                           判断前者为false后,不会判断后者,效率更高。

|(或):前后两个条件有一个成立(true),结果就成立;

               判断前者为true后,还会判断后者。

||(短路或):前后两个条件有一个成立(true),结果就成立;

                        判断前者为true后,不会判断后者的,效率更高。

^(异或):前后两个条件不一样就返回true;

!(非):置反        

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

注意:

(1)逻辑运算符运行结果都是boolean类型;

 (2)&、&&、|、||、^ 两侧都是boolean类型数据。

五、Scanner类

含义:Java给我们提供的Scanner类。

作用:可以在控制台中输入数据。

//导包:将Scanner类导入到当前类中(当前类可以使用Scanner类)
import java.util.Scanner;
public class Test11{
	
	public static void main(String[] args){
		
		//创建Scanner类的对象,这个对象叫做scan
		Scanner scan = new Scanner(System.in);
		
		System.out.println("输入int值:");
		int num1 = scan.nextInt();
		
		System.out.println("输入double值:");
		double num2 =scan.nextDouble();

        String str = scan.next();
        char  c = scan.next.charAt(0);
		
		System.out.println(num1);
		System.out.println(num2);
        System.out.println(str);
		System.out.println(c);
	}
}

注意String类型和char类型。

六、三目(三元)运算符

1.语法结构:数据类型 变量名 = (表达式)?值1:值2;

2.表达式的结果必须是boolean的值
           true - >将值1赋值给变量 
           false- >将值2赋值给变量

int num = (false)?10:20;
System.out.println(num);  //20

七、字符串拼接符

+:如果两侧是数值,该符号为算数运算符;
      如果有一侧是字符串,该符号为字符串拼接符.

System.out.println(1 + 2 + "abc" + "def" + 1 + 2);
//					 3   + "abc" + "def" + 1 + 2
//						"3abc"   + "def" + 1 + 2
//						       "3abcdef" + 1 + 2
//								   "3abcdef1"+ 2
//								      "3abcdef12"

八、位运算符

1.概念:将十进制的数据转换为二进制再做运算。

2.符号:

&(与):同位比较,两者为1,结果则为1;

|(或):同位比较,两者有1,结果就为1;

^(异或):同位比较,两者不同为1,相同为0;

<<( 左移):整体向左移动n位,用n个0补位;

>> (右移):整体向右移动n位,就用n个最高位补位(正数最高位为0,负数最高位为1);

>>> (无符号位右移):整体向右移动n位,就用n个0补位。

注意:

(1)&、|、^ 符号两侧都是数值,此符号为位运算符;

(2)&、|、^ 符号两侧都是boolean值,此符号为逻辑运算符;

(3)>> 和 >>> 在移动正数时没有区别。

例:用最有效率的方式计算2*8.

//2   - 0000,0010
//<<3 - 0001,0000
System.out.println(2<<3);   //16

总结

需求1:计算以下内容:

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

需求2:输入两个int值,返回最大值。

import java.util.Scanner;
public class Max{
	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();					
        int max = (a>b)?a:b;
        System.out.println(max);
    }
}

需求3:输入三个int值,返回最大值。

​​import java.util.Scanner;
public class Max{
	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;
		max = (max>c)?max:c;
        System.out.println(max);
    }
}

需求4:输入三个int值,从小到大输出。

​​import java.util.Scanner;
public class Max{
	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;
		max = (max>c)?max:c;
        //最小值
        int min = (a<b)?a:b;
		min = (min<c)?min:c;
        //中间值
        int mid = a+b+c-max-min;
        System.out.println(max"从小到大输出:"+min+" "+mid+" "+max);
    }
}

​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值