目录
运算符
JavaSE基础专栏中前面我们学过了通过字面量和变量来表示一个数据,这篇博客,我们来继续学习对数据进行运算。而对数据运算就要用到我这里要讲解的运算符,而在讲解具体的运算符之前,我对运算符和表达式做一个简单的描述:
运算符:对字面量或者变量进行操作的符号
表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
例如:
int a = 10;//定义一个变量a并赋值10
int b = 20;//定义一个变量b并赋值20
int c = a + b;//定义一个变量c并赋值表达式a+b
+:是运算符,是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
总共要学习5种类型的运算符:
- 算数运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
后三种标记为灰色了,后面我讲结构的时候会学习。这里我们先学习前两种,首先我们来学习算术运算符
1、算数运算符
Java中的算数运算符有如下几种:
符号 | 作用 | 说明 |
+ | 加 | 参照小学一年级 |
- | 减 | 参照小学一年级 |
* | 乘 | 参照小学二年级,与 “ X ”相同 |
/ | 除 | 参照小学二年级,与 “ ÷ ”相同 |
% | 取余 | 获取的是两个数据做除法的余数 |
了解了Java中的算术运算符之后,下面我们到IDEA中去使用一下:
public class OperatorDemo {
public static void main(String[] args) {
//定义两个int类型的变量
int a = 6;
int b = 4;
System.out.println(a + b);//10
System.out.println(a - b);//2
System.out.println(a * b);//24
System.out.println(a / b);//为什么不是1.5而是1
System.out.println(a % b);//2
//整数相除只能得到整数,要想得到小数,必须有浮点数的参与
System.out.println(6.0 / 4);
}
}
总结两个注意事项:
1、 / 和 % 的区别:都是两个数做除法,但是 / 取结果的商,%取结果的余数
2、整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
案例练习:数值拆分
需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
举例:int number = 123;
在控制台输出结果:个位是:3 十位是:2 百位是:1
我写的参考代码:
public class OperatorTest {
public static void main(String[] args) {
//案例数值拆分
//定义一个三位数
int number = 123;
//获取个,十,百位的数据
int geWei = number % 10;
int shiWei = number / 10 % 10;
int baiWei = number / 100 % 10;
//输出结果
System.out.println("个位是:" + geWei);
System.out.println("十位是:" + shiWei);
System.out.println("百位是:" + baiWei);
}
}
+操作的三种情况
1、数字相加(类型转换)
在Java程序中,数据参与运算,要求类型一致。这里就涉及到了数据的类型转换。而类型转换又分为两种:
1.隐式转换
2.强制转换
隐式转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
格式:数据类型变量名= (目标数据类型)(数值或者变量)
IDEA中的代码演示:
public class OperatorDEmo01 {
public static void main(String[] args) {
int a = 10;
double b = 13.14;
System.out.println(a + b);//这里a作为一个int类型被隐式转换为double类型做了操作
int c = (int) (a + b);//23,可见直接舍弃了小数部分
System.out.println(c);//这里用了强制转换,将double类型(a+b)强制转换为c
//double d = a + b;
//short转int也是同理
short s = 10;
int i = 20;
int j = s + i;
//short ss=s+i;
short ss = (short) (s + i);
}
}
2、字符相加
看一段IDEA中的代码,然后再回来总结。
public class OperatorDemo02 {
public static void main(String[] args) {
int a = 10;
char ch = 'A';
System.out.println(a + ch);//75可知'A'的值是65
ch = 'a';
System.out.println(a + ch);//107可知'a'的值为97
ch = '0';
System.out.println(a + ch);//58可知'0'的值是48
}
}
代码演示完毕后,回到博客里总结: 字符参与+操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字字符对应的数据值:(有三个需要记忆) ‘A’ 65 A-Z是连续的 ‘a’ 97 a-z是连续的 ‘0’ 48 0-9是连续的 这里也给大家准备了一张ASCII码表,里面有常用的字符及其对应的数值关系:
3、字符串相加
同样先看IDEA中代码,然后再回来总结。IDEA中代码演示如下:
public class OperatorDemo03 {
public static void main(String[] args) {
System.out.println("瓦特"+"的代码"+"小屋");
System.out.println("瓦特的代码小屋"+"888");
System.out.println(666+"瓦特的代码小屋");
System.out.println("瓦特的代码小屋"+8+88);
System.out.println(98+1+"代码小屋");
}
}
代码演示完毕后,回到资料总结:
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
例如:“瓦特的代码小屋”+ 888
当连续进行“+”操作时,从左到右逐个执行
例如:1+ 9999 + “岁zhongguo”
算数运算符讲解完毕,大家赶快动手练习一下
2、赋值运算符
符号 | 作用 | 说明 |
= | 赋值 | a = 10,将10赋值给变量a |
+= | 先加后赋值 | a += b,将a+b的结果赋值给a |
-= | 先减后赋值 | a -= b,将a-b的结果赋值给a |
*= | 先乘后赋值 | a *= b,将a*b的结果赋值给a |
/= | 先除后赋值 | a /= b,将a/b的结果赋值给a |
%= | 先取余后赋值 | a%=b,将a%b的结果赋值给a |
了解了Java中的赋值运算符之后,下面我们到IDEA中去使用一下:
public class OperatorDemo04 {
public static void main(String[] args) {
int a = 10;
System.out.println("a:" + a);
//+=:将左右边数据相加赋值给左边
a += 20;//相当于a = a + 20;
System.out.println("a:" + a);//30
//有一个小Tips:扩展的赋值运算符底层隐藏了强制类型转换
short s = 1;
s += 2;//相当于s = (short)(s+2);
System.out.println("s: " + s);
}
}
注意事项:
扩展的赋值运算符隐含了强制类型转换
感谢大家!