一、介绍
技巧:有字符串,那就是字符串拼接,没有字符串,那就是普通的运算符
-
当
+
操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。例如:
"123" + 123
,结果为"123123"
,而不是246。 -
当连续进行
+
操作时,从左到右逐个执行的。例如:
1 + 2 + "abc"
,结果:“3abc”解释:
第一步:1 + 2 。在这个过程中,没有字符串参与的,所以做的是加法运算,结果为3。
第二步:3 + “abc”。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc"。
二、字符串相加的练习
字符串只有 + 操作,是没有 -、*、/运算的
这里特别注意的是,变量在进行拼接的时候,会把变量里的值拿出来进行拼接!!!
1 + 2 + "abc" + 2 + 1
结果:“3abc21”
解释:
第一步:1 + 2 。在这个过程中,没有字符串参与的,所以做的是加法运算,结果为3。
第二步:3 + “abc”。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc"。
第三步:“3abc” + 2。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc2"。
第四步:“3abc2” + 1。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串“3abc21”
三、练习:数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
我们以前在进行计算的时候是通过一系列公式将个位、十位、百位都获取出来,并打印在控制台当中,打印出来的结果就是
但是这种打印结果看起来非常累,如果我不看题目,我怎么知道这个3是什么,2是什么,1是什么?那能不能在打印的时候前面有一些说明性的提示呢?
package com.itheima.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//键盘录入一个三位数,获取其中的个位,十位,百位
//1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();
//2.获取个位,十位,百位
//公式:
//个位: 数字 % 10
//十位: 数字 / 10 % 10
//百位: 数字 / 10 / 10 % 10
//...
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100 % 10;
System.out.println("个位是:" + ge);
System.out.println("十位是:" + shi);
System.out.println("百位是:" + bai);
}
}
结果:
四、字符的+操作
在学习隐式转换的时候,曾经有过这样的提升规则:byte、short、char三种数据在参与运算的时候,都会先提升为int,然后再进行运算。但此时就有一个问题了,byte、short都是一个数字,容易提升,但是char是一个字符,怎么进行提升呢?我们先不着急,先来看一段代码:
char c = 'a'; // 首先定义一个字符类型的变量
int result = c + 0; // 用字符c跟数字0进行了相加
System.out.println(result);// 打印结果为:97
打印结果为什么为97呢,这就要说到字符在进行计算的时候会有以下规则:
当+操作(作为运算符的时候)中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。
ASCII码表(American Standard Code for Information Interchange)美国信息交换标准码表。下面红色框框起来的部分,这张表中,每一个数字都会跟一个唯一的数字产生一个一一对应的关系。这张表是操作系统类似的,每个人的系统中都是存在的,不需要你额外下载。
ASCII码表中:‘a’ ----- 97、‘A’ ----- 65
示例:
五、算术运算符的总结
分类:
+ - * / % 这些操作跟小学数学几乎是一模一样的。
注意点:
- / 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。
- 整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。
算术运算符的高级用法:
是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。
特例:字符串只有+操作,没有其他操作。