时间:2021-05-19
在java中,你可以定义
char c = '\u4f60';char m = '\u0045';char e = '\u554a';这样的字面量,例如:
System.out.println("\u535a\u5ba2\u56ed");
这样的代码不管在什么编码环境下都不会出现中文乱码的问题
但是你不能定义这样的字面量:
char c = '\u000a';char m = '\u0027';这是因为\u000a和\u0027是特殊转义字符,Java对在字符串字面常量中的Unicode转义字符没有提供任何特殊处理。程序会直接按照原字符转换为它们所表示的字符[JLS 3.2]。
\u000a是一个LineFeed,即换行,这样程序会编译成
char c = '';自然是编译错误了
另一个例子是:
System.out.println("a\u0022.length()+\u0022b".length());
对该程序的一种很肤浅的分析会认为它应该打印出26,稍微深入一点的分析会认为该程序应该打印16,如果你实际运行一遍,发现结果既不是26也不是16,而是2.
因为,\u0022是双引号的转义字,程序最终会编译为
String str = "a".length()+"b";System.out.println(str.length());基于此案例,我写了一个例子,大家可以运行尝试一下结果
String str = "\u0061\u0022\u002b\u0028\u006e\u0065\u0077\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0063\u006f\u006e\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u002e\u0043\u0061\u006c\u006c\u0061\u0062\u006c\u0065<\u0056\u006f\u0069\u0064>\u0028\u0029\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0056\u006f\u0069\u0064\u0020\u0063\u0061\u006c\u006c\u0028\u0029\u007b\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0022\u0073\u0075\u0070\u0072\u0069\u0073\u0065\u0020\u006d\u0061\u0074\u0068\u0065\u0072\u0020\u0066\u0075\u0063\u006b\u0065\u0072\u0021\u0022\u0029\u003b\u007d\u007d\u0029\u002e\u0063\u0061\u006c\u006c\u0028\u0029\u002b\u0022";System.out.println(str);以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
MySQL转义转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。MySQL中
在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号(“”)开头,称为转义字符。MySQL识别下列转义字符:0一个ASCII0(NUL)字符。'一个
i匹配大小写s模式中的圆点元字符(.)匹配所有的字符,包括换行符x模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的#以及下一个换
MySQL的转义字符“\”mfc_basicMySQL识别下列转义字符:\0一个ASCII0(NUL)字符。\n一个新行符。\t一个定位符。制符分隔\r一个回车
前言在java中,反斜杠“\”转义是“\”,因此表示一个“\”要使用“\\”,如果是正则表达式,那么表示一个“\”需要用“\\\\”,在mysql中,反斜杠转义