运算符

运算符

1 运算符概述

运算符要点:

  • 按照参与运算的元素个数分为:单元运算,双元运算,三元运算

    • 单元运算:a++
    • 双元运算:a+b
    • 三元运算:running ? a:b
  • 优先级:优先级高的运算先计算

    • 括号级别最高,其次是单元运算,双元运算(先乘除后加减),三元运算和赋值运算最低
  • 综合性:相同优先级的按照结合性顺序计算

    • 双目从左到右,赋值从右到左
  • 顺序调整:可以利用()调整优先级顺序,建议按照人能够理解的顺序添加括号。

案例:

//优先级
int c=4+6/2+8*2;
System.out.println(c);
//结合性
int n=3+4+5+6;
System.out.println(n);
//利用()调整计算顺序
int k=1024*(100+2);
System.out.println(k);

2 数学运算符

2.1 四则运算
  • 相同数据类型参与数学运算,得到相同类型的结果

    • 整数除法得到整数结果!
  • 参与数学运算的数据类型不一致的时候,就近自动数据类型转换,转换为相同类型再进行计算

  • byte.short.char按照int类型计算

  • 计算结果超过数据类型范围会溢出

  • 为了提高运行期间的性能,常量计算会在编译期间优先计算

案例:

//一般情况
int a=50;
int b=100;
int c=a+b;//整数加整数得到整数
System.out.println(c);
//溢出问题
int e=Integer.MAX_VALUE;
int f=8;
int g=e+f;//溢出不会报任何错误
System.out.println(g);
//溢出会隐含发生
int h=Integer.MAX_VALUE;
int y=5;
long l=h+y;//整数h加上整数y得到的溢出整数的结果,再将整数赋值给L
System.out.println(l);
//解决溢出问题:
int h1=Integer.MAX_VALUE;
int y1=5;
long L=(long)h1+y1;
System.out.println(L);
//整除情况
int a1=9;
int b1=2;
int c1=9/2;//整除得到4
System.out.println(c1);
//浮点除法
double dx=9.0/2;
System.out.println(dx);
//自动转换类型
int a2=5;
int i=100;
long n=a2+i;//java先将a转换为long类型数再与l相加
System.out.println(n);
//byte short char按照int计算得到int结果
byte b3=5;
short s1=6;
//short s2=b3+s1;//编辑错误,byte short char按照int计算得到int结果
int n1=b3+s1;
System.out.println(n1);
//常量编辑期间优化 
byte q=3+100;//3是int的常量,100是int,编译器运算为103不超过byte范围可以赋值
//byte m=100+100;//编辑错误,100与100的和超过byte范围
System.out.println(q);
//System.out.println(m);

2.2 取余数运算

除数是正数时余数运算规律:

  • 被除数是正数时候余数是介意0到除数之间的数,如;除数3则余数是0 1 2之一,范围是
  • 如果被除数是0 1 2 3 4,,,则余数是周期函数,如:除数3则余数是0 1 2 0 1 2 0 1 2,,,
  • 如果被除数是负数,除数是3其余数范围是:

开发中余数的用途:

  1. 控制计算结果的范围。比如控制计算结果是3以内的数,就对3取余数就行了。
  2. 控制周期性运算:比如发牌,周期循环动画。

案例:

//取余数计算
System.out.println(-5%3);
System.out.println(0%3);
System.out.println(1%3);
System.out.println(2%3);
System.out.println(3%3);
System.out.println(4%3);
System.out.println(5%3);
System.out.println(6%3);
System.out.println(7%3);
System.out.println(8%3);
System.out.println(9%3);
2.3 自增运算,自减运算

自增.自减运算就是当前变量的值增加1或者减少1,符号是++.--,是单元运算。

按照写法可以分为4种情况:

  • i++称为“后加加”:先取变量i的值作为i++整体表达式的值,再将i的值增加1。假设运算前i=1,则运算后i++为1,i为2。
  • ++i称为“先加加”:先将i的值增加1,再取变量的i值作为++i整体表达式的值。假设运算前i=1,则运算后++i为2,i为2。
  • i--称为“后减减”:先取变量i的值作为i--整体表达式的值,再将i的值减少1。假设运算前i=1,则运算后i--为1,i为0。
  • --i称为“先减减”:先将i的值减少1,再取变量的i值作为--i整体表达式的值。假设运算前i=1,则运算后--i为0,i为0。

案例:

//自增,自减运算
int i=1;
System.out.println(i++);//1
System.out.println(i);//2
i=1;
System.out.println(++i);//2
System.out.println(i);//2
i=1;
System.out.println(i--);//1
System.out.println(i);//0
i=1;
System.out.println(--i);//0
System.out.println(i);//0

3 关系运算符

关系运算结果是boolean类型数据,如果比较结果成立则得到true,否则得到false。

案例:

//关系运算符
int age=5;
System.out.println(age>12);//false
System.out.println(age>=12);//false
System.out.println(age<12);//true
System.out.println(age<=12);//true
System.out.println(age==5);//true
System.out.println(age!=5);//false

4 逻辑运算符

4.1 什么是逻辑运算

利用逻辑运算可以简单的逻辑复合成为复杂逻辑。

4.2 逻辑运算符

逻辑运算:

  • 运算符有3个分别是:与&&. 或||. 非!

  • 参与逻辑运算的变量或表达式都是boolean类型,运算结果也为boolean类型

  • 运算规则如下:

    • false && false=false
    • false && true=false
    • true && false=false
    • false && true=true
    • false || false=false
    • false || true=true
    • true || false=true
    • true || true=true
    • !false=true
    • !true=false
  • 经典案例,判断闰年,规则如下:

    • 公元年份除以4可整除但除以100不可整除,为闰年。
    • 公元年份除以400可整除,为闰年。
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		/*
		 * && || !逻辑运算符
		 * 闰年规则
		 * 1  4年一闰,百年不闰
		 * 2  400年再闰
		 */
        //创建Scanner对象
		Scanner console=new Scanner(System.in);//Scanner是java提供的API
        //可以从控制台获取用户输入的参数
		System.out.println("请输入一个年份");
		int year=console.nextInt();//调用方法获取用户输入信息,从控制台读取年份数
		//year==2001
		boolean b=(year%4==0 && !(year%100==0))||(year%400==0);
		//(2000%4==0 && !(year%100==0))||(2000%400==0) 
		//(2000%4==0 && !(0==0))||(2000%400==0)
		//(2000%4==0 && !(true))||(2000%400==0)
		//(2000%4==0 && !(false))||(2000%400==0)
		//(0==0 && false)||(2000%400==0)
		//(ture && false)||(2000%400==0)
		//false          ||0==0
		//false||true
		//ture
		System.out.println(b);
    }
}    
4.3 短路逻辑运算

短路&&运算案例:

//&& 测试短路的并且
char gender='男';//触发短路逻辑的条件
int age=26;
boolean b=gender=='女'&& age++>=60;
System.out.println(b);
System.out.println(age);

短路||运算案例:

//||短路的或计算
char gender='女';
int age=26;
boolean pass=gender=='女' ||age++>=60;
System.out.println(pass);
System.out.println(age);

5 赋值运算符

5.1 一般赋值运算
//赋值运算
int i=9;
i=i+10;
System.out.println(i);
//测试赋值表达式的值
int n=9;
int k;
System.out.println(k=n+5);
//综合性,赋值运算的综合性从右至左
int a,b,c,d;
a=b=c=d=20;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
5.2 复合赋值运算

复合赋值运算可以看作2元运算和赋值运算的简化写法。

案例:

//复合赋值运算
int n=1;
n +=5;//n=(int)(n+5);
System.out.println(n);
n=1;
n -=8;//n=(int)(n-8);
System.out.println(n);		
n=1;
n *=5;//n=(int)(n*5);
System.out.println(n);		
n=8;
n *=10.9;//n=(int)(n*10.9)
System.out.println(n);
int n=5;
n /=5;//n=(int)(n/5);
System.out.println(n);
int n=5;
n %=5;//n=(int)(n%5);
System.out.println(n);

6 字符串连接运算符

一个运算符号两种功能现象称为“运算符重载”。

使用“+”元素时候:

  • 如果加号两侧都是数值就是数值加法
  • 如果加号的一侧出现了字符串,就按照字符串连接运算计算
  • 字符串连接时候,会将不是字符串的数据转换为字符串再进行连接

案例:

//字符串连接
System.out.println(5+5.5);
System.out.println(5+"5.5");
System.out.println(5+5+"5.5");
System.out.println("5"+5+"5.5");

7 三元运算符

三元运算符称为“条件运算符”或者“条件表达式”。

条件运算符的规则如下:

  • 先计算“boolean"表达式
  • 如果“boolean"表达式的值为true,整个表达式的值为”表达式1"的值
  • 如果“boolean"表达式的值为false,整个表达式的值为”表达式2"的值

案例:

//挑选a和b中的最大值
Scanner console=new Scanner(System.in);
System.out.println("请输入a b");
int a=console.nextInt();
int b=console.nextInt();
int max=a>b ? a:b;
System.out.println(max);
posted @ 2021-02-06 23:04  指尖上的未来  阅读(325)  评论(0)    收藏  举报