之前对java字符转义这一块稍作了解,在这里理理自己主观浅显的理解
这里会谈谈字符编码的是另一种问题和转义没有关系
以下面代码做分析
System.out.println("a".length()+"b".length());
对以上代码["a".length()+"b".length()]部分
["]默认作为编译器的["],用来识别编译器中的字符串部分,["a".length()+"b".length()]执行后输出的字符串为1+1 -> [2]
System.out.println("a\".length()+\"b".length());
对以上代码[a\".length()+\"b]部分
["]转义作为字符串的["],用来识别字符串中的“字符串”部分(如果字符串可以像编译器中的代码一样执行,那两者作用会是相似的),[a\".length()+\"b]执行后得到的字符串为[a".length()+"b],整体执行后输出的字符串为[14]
String[] aa = "aaa\\bbb\\ccc".split("\\\\");
这里split的参数是一个正则表达式匹配模式而非一个简单的String
["aaa\\bbb\\ccc"]和["\\\\"]中的[\]默认作为编译器的[\],用来识别编译器中进行转义的字符,转义成字符串为[aaa\bbb\ccc]和[\\],[\]作为字符串中的普通字符,但在split中作为参数的[\],用来识别参数中进行转义的字符串分隔符,真正字符串分隔符为[\],aa元素分别为"aaa","bbb","ccc"
编码是另一种问题,是对字符的机器识别,是所有抽象的具体表现
ASCII编码,Unicode编码和它的实现方式UTF-8编码,以不同的二进制方式实现字符,但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的(ASCII码的字符实现在所有编码中通用)
下面是阮大大对编码问题的讲解
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html