一、算数运算符
符号 | 作用 | 例子 |
+ | 加号 | 5+2=7 |
- | 减号 | 5-2=3 |
* | 乘号 | 5*2=10 |
/ | 除号(注:整数相除时,商取整数) | 5/2=2 |
% | 取余符号(注:相除后,取余数) | 5%2=1 |
注:整数相运算的结果只能得到整数,如果想要得到小数,需要有小数参与运算
例:键盘录入一个三位数,分别输出这个数的个位、十位、百位
import java.util.Scanner;
public class NumSplit
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个三位数:");
int num=scanner.nextInt();
while (num<100 | num>999)
{
System.out.println("输入错误,请重新输入:");
num=scanner.nextInt();
}
int ge=num%10; //计算个位
int shi=num/10%10; //计算十位
int bai=num/100%10; //计算百位,最高位多计算一个,如果只计算百位,则bai=num/100就行了
System.out.println("个位:" + ge);
System.out.println("十位:" + shi);
System.out.println("百位:" + bai);
}
}
二、字符串拼接操作
当 + 操作中,只要遇到了字符串,这时 + 就是字符串连接符,而不是算术运算。
例如:
System.out.println("age:"+18);
System.out.println("age:"+18+1); //遇到了字符串"age",后面的+号都变为字符串连接符,不包括使用()提升+的算术优先级
System.out.println(10+"age:"+18); //字符串连接
System.out.println(10+20+"age:"+18); //前面10+20可以进行加法运算,只要遇到一个字符串,则 + 变为连接符
System.out.println(10+20+"age:"+(18+1)); //可以利用()将后面的拼接作用的+ 变为加法运算符,这里用()将18+1的算术优先级提高,可以进行计算
三、自增自减运算符
符号 | 作用 | 说明 |
++ | 自增 | 变量自身的值加1 |
-- | 自减 | 变量自身的值减1 |
变量前++(--) 和 变量后++(--)的区别:
变量前++(--)就是先将变量进行赋值操作,然后再进行++(--)运算
变量后++(--)就是先将变量进行++(--)运算后,然后进行赋值操作
例如:
int a=0;
int b=a++; //即先将变量a的值赋值给b,然后变量a再进行++,这行运行结束时b=0,a=1(--同理)
System.out.println(b);
b=++a; //即先对变量a进行++,然后再将a的值赋值给b,a++运算完后a的值为2,然后再赋值给b,此时b=2,a=2(--同理)
System.out.println(b);
四、类型转换
类型转换分为:1、隐式类型转换 2、强制类型转换
隐式类型转换
存储范围小的数据类型自动转换为存储范围大的数据类型
转换规则:byte→short(char)→int→long→float→double
例:
int a=10;
double b=2.5;
double c=a; //自动将int类型的变量a转换为double类型,也提高了精度
double d=a+b;
char ch='a';
int e=a+ch; //ch的值是字符'a',而字符a的Ascall码是97,然后与a进行相加,得到num2的值为107
System.out.println(c);
System.out.println(d);
System.out.println(e);
注:byte short char 三种数据在运算的时候,都会提升为int,然后再进行运
强制类型转换
存储范围大的数据类型想转换为存储范围小的数据类型时,必须强制转换
例:
int num1=10;
double num2=3.14;
//如果想大范围的转换到小范围的,则要强制转换,在大范围的变量前面加(小范围数据类型)可以将大范围的变量强制转换为小范围的数据类型
int num3=num1+(int)num2;
System.out.println(num3);
五、赋值运算符
符号 | 作用 | 说明 |
= | 赋值 | a=10,将10赋值给a |
+= | 加后赋值 | a+=10,即a=a+10,将a+10后赋值给a |
-= | 减后赋值 | a-=10,即a=a-10,将a-10后赋值给a |
*= | 乘后赋值 | a*=10,即a=a*10,将a*10后赋值给a |
/= | 除后赋值 | a/=10,即a=a/10,将a/10后赋值给a |
%= | 取余后赋值 | a%=10,即a=a%10,将a%10后赋值给a |
注:扩展的赋值运算符隐含了强制类型转换
例(以%=为例):
int num=10;
num %= 10; //即num=num % 10
System.out.println(num);
六、关系运算符
符号 | 说明 |
== | a==b,判断a和b是否相等,成立则为true,不成立则为false |
!= | a!=b,判断a和b是否不相等,成立为true,否则为false |
< | a<b,判断a是否小于b,成立为true,否则为false |
> | a>b,判断a是否大于b,成立为true,否则为false |
<= | a<=b,判断a是否小于等于b,成立为true,否则为false |
>= | a>=b,判断a是否大于等于b,成立为true,否则为false |
例:
System.out.println(1==5); //不成立,输出false
System.out.println(1!=5); //成立,输出true
System.out.println(1<5); //成立,输出true
System.out.println(1>5); //不成立,输出false
System.out.println(1<=5); //成立,输出true
System.out.println(1>=5); //不成立,输出false
七、逻辑运算符
符号 | 介绍 | 说明 |
& | 逻辑与 | &两边都为true才为true |
| | 逻辑或 | |两边只要有true,则为true |
! | 逻辑非 | 取反操作 |
^ | 逻辑异或 | ^两边,相同为false,不通为true |
&& | 短路与 | &&左边为true,才执行右边,若左边为false,则不执行右边 |
|| | 短路或 | ||左边为false,才执行右边,若左边为true,则不执行右边 |
八、三元运算符
int max=num1>num2?num1:num2 //如果num1>num2,则返回num1,否则返回num2
例:利用三元运算符找出三个数中的最大值
Scanner scanner=new Scanner(System.in);
int num1= scanner.nextInt();
int num2= scanner.nextInt();
int num3= scanner.nextInt();
int temp=num1 > num2 ? num1 : num2; //定义一个临时整型变量,用来存储num1和num2的较大值
int max=temp > num3 ? temp : num3; //然后将temp和num3比较,将这两个中较大值赋值给max,得出最大值
System.out.println(max);
![](https://img-blog.csdnimg.cn/img_convert/a93007b269cab398dc619cb7eb076fd7.png)