运算符
运算符
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其余数范围是:
开发中余数的用途:
- 控制计算结果的范围。比如控制计算结果是3以内的数,就对3取余数就行了。
- 控制周期性运算:比如发牌,周期循环动画。
案例:
//取余数计算
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);
每天对着镜子里的自己说一句:今天的你也很棒!