1 public class Test{ 2 3 public static void main(){ 4 System.out.println(10+"\t"+"!"); 5 System.out.println(10+'\t'+"!");
6 }
7 }
这时你是不是认为两个输出是一样的,都是10加上以个制表符再加上一个感叹号,但实际上的输出:
这时你就很懵逼呀,为什么第二个输出这么奇怪呢?
很简单,这其实是一个基本数据类型隐式转换的结果
- 首先,Java基本数据类型有八大类:byte,(short,char),int,long,float,double,boolean;从小范围到大范围排序,boolean例外
- 可见当int类型的10加上char类型'\t'时,char类型的'\t'就会隐式的从char型转到int型
- 而int类型的'\t'在十进制中代表数字9
- 所以用算术运算符+后,便得19
字符表
转义字符
|
意义
|
ASCII码值(十进制)
|
\a
|
响铃(BEL)
|
007
|
\b
|
退格(BS) ,将当前位置移到前一列
|
008
|
\f
|
换页(FF),将当前位置移到下页开头
|
012
|
\n
|
换行(LF) ,将当前位置移到下一行开头
|
010
|
\r
|
回车(CR) ,将当前位置移到本行开头
|
013
|
\t
|
水平制表(HT) (跳到下一个TAB位置)
|
009
|
\v
|
垂直制表(VT)
|
011
|
\\
|
代表一个反斜线字符''\'
|
092
|
\'
|
代表一个单引号(撇号)字符
|
039
|
\"
|
代表一个双引号字符
|
034
|
\? | 代表一个问号 | 063 |
\0
|
空字符(NULL)
|
000
|
\ooo
|
1到3位八进制数所代表的任意字符
|
三位八进制
|
\xhh
|
1到2位十六进制所代表的任意字符
|
二位十六进制
|