Java转义字符.doc_第1页
Java转义字符.doc_第2页
Java转义字符.doc_第3页
Java转义字符.doc_第4页
Java转义字符.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java转义字符一.为什么要使用转义字符?1、 HTML中、&等都有特殊的含义(,用于链接签,&用于转义),不能够直接使用,这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,需要进行转义。2、 转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符的原因有两个:第一、“”类符号已经用来表示HTML标签,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,这就需要定义它们的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写规则。第二、有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。二、常用的HTML转义字符列表最常用的字符实体说明实体编号半方大的空白 全方大的空白 空格 小于<大于>&符号&双引号"版权©乘号×除号÷转义序列b退格f走纸换行n回车r换行t横向跳格单引号双引号反斜杠JAVA中转义字符: 1.八进制转义序列: + 1到3位5数字;范围000377 0:空字符 2.Unicode转义字符:u + 四个十六进制数字;065535 u0000:空字符 3.特殊字符:就3个 :双引号 :单引号 :反斜线 4.控制字符:5个 单引号字符 反斜杠字符 r 回车 n 换行 f 走纸换页 t 横向跳格 b 退格 点的转义:. = u002E 美元符号的转义:$ = u0024 乘方符号的转义: = u005E 左大括号的转义: = u007B 左方括号的转义: = u005B 左圆括号的转义:( = u0028 竖线的转义:| = u007C 右圆括号的转义:) = u0029 星号的转义:* = u002A 加号的转义:+ = u002B问号的转义:? = u003F 反斜杠的转义: = u005C = 下面的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。那么,这个程序会打印什么呢? Java代码 public class EscapeRout public static void main(String args) / u0022 是双引号的Unicode转义字符 System.out.println(au0022.length() +u0022b.length(); public class EscapeRout public static void main(String args) / u0022 是双引号的Unicode转义字符 System.out.println(au0022.length() +u0022b.length(); 对该程序的一种很肤浅的分析会认为它应该打印出26,因为在由两个双引号au0022.length()+u0022b标识的字符串之间总共有26个字符。 稍微深入一点的分析会认为该程序应该打印16,因为两个Unicode转义字符每一个在源文件中都需要用6个字符来表示,但是它们只表示字符串中 的一个字符。因此这个字符串应该比它的外表看其来要短10个字符。 如果你运行这个程序,就会发现事情远不是这么回事。它打印的既不是26也不是16,而是2。 理解这个谜题的关键是要知道:Java对在字符串字面常量中的Unicode转义字符没有提供任何特殊处理。编译器在将程序解析成各种符号之前, 先将Unicode转义字符转换成为它们所表示的字符JLS 3.2。因此,程序中的第一个Unicode转义字符将作为一个单字符字符串字面常量(a)的结束引号,而第二个Unicode转义字符将作为另一 个单字符字符串字面常量(b)的开始引号。程序打印的是表达式a.length()+b.length(),即2。 如果该程序的作者确实希望得到这种行为,那么下面的语句将要清楚得多:Java代码 System.out.println(a.length()+b.length(); 更有可能的情况是该作者希望将两个双引号字符置于字符串字面常量的内部。使用Unicode转义字符你是不能实现这一点的,但是你可以使用转义字 符序列来实现JLS 3.10.6。表示一个双引号的转义字符序列是一个反斜杠后面紧跟着一个双引号(”)。如果将最初的程序中的Unicode转义字符用转义字符序列来 替换,那么它将打印出所期望的16(错误,应该是14,不知道是怎么会出来16): Java代码 System.out.println(a.length()+b.length(); 许多字符都有相应的转义字符序列,包括单引号()、换行(n)、制表符(t)和反斜线()。你可以在字符字面常量和字符串字面常量中使用转义字符序列。 实际上,你可以通过使用被称为八进制转义字符的特殊类型的转义字符序列,将任何ASCII字符置于一个字符串字面常量或一个字符字面常量中,但是最好是尽可能地使用普通的转义字符序列。 普通的转义字符序列和八进制转义字符都比Unicode转义字符要好得多,因为与Unicode转义字符不同,转义字符序列是在程序被解析为各种符号之后被处理的。 ASCII是字符集的最小公共特性集,它只有128个字符,但是Unicode有超过65,000个字符。一个Unicode转义字符可以被用来在只使用ASCII字符的程序中插入一个Unicode字符。一个Unicode转义字符精确地等价于它所表示的字符。Unicode转义字符被设计为用于在程序员需要插入一个不能用源文件字符集表示的字符的情况。它们主要用于将非ASCII字符置于标识符、字符 串字面常量、字符字面常量以及注释中。偶尔地,Unicode转义字符也被用来在看起来颇为相似的数个字符中明确地标识其中的某一个,从而增加程序的清晰 度。 总之,在字符串和字符字面常量中要优先选择的是转义字符序列,而不是Unicode转义字符。Unicode转义字符可能会因为它们在编译序列中 被处理得过早而引起混乱。不要使用Unicode转义字符来表示ASCII字符。在字符串和字符字面常量中,应该使用转义字符序列;对于除这些字面常量之 外的情况,应该直接将ASCII字符插入到源文件中。转义字符 所有的转义字符都是由 打头的 第二个字符 0-9 :八进制 u :是Unicode转意,长度固定为6位 Other:则为以下字母中的一个 b,t,n,f,r, 都不满足,则产生一个编译错误。 当然了,提供八进制也是为了和C语言兼容. b,t,n,f,r 则是为控制字符.书上的意思为:描述数据流的发送者希望那些信息如何被格式化或者被表示. Unicode转义字符非常有趣 它可以写在代码的任意位置,只要转义后是合法的. 例如: int c=0u003b 上面的代码可以编译通过,等同于int c=0; u003b也就是;的Unicode代码 上面的例子不能让人很信服,所以特地写了下面这一段代码用来将字符串转换成为unicode字符 然后你可以将打印出来的代码放置在EggHello.java中,然后运行它,结果是让人激动的。/* * author:鸡蛋 date:2004/11/10 字符串转换为Unicode */public class Asc2Unicode PRivate StringBuffer ch; private StringBuffer tch; Asc2Unicode(StringBuffer s) ch = s; if (ch.length() 0) tch = new StringBuffer(1000); void transform() if (ch.length() 1) return; for (int i = 0; i ch.length(); i+) (new Integer(int) ch.charAt(0).toString(); tch.append(new StringBuffer(u00); tch.append(new StringBuffer(new String(Integer.toHexString(int) ch .charAt(i); StringBuffer getStr() return tch; public static void main(String argv) Asc2Unicode au = new Asc2Unicode(new StringBuffer(new String( public class EggHello + public static void main(String argv) + System.out.println(Hello,World); + + ) ); au.transform(); System.out.println(au.getStr(); 打印如下:u0070u0075u0062u006cu0069u0063u0020u0063u006cu0061u0073u0073u0020u0045u0067u0067u0048u0065u006cu006cu006fu007bu0020u0020u0020u0070u0075u0062u006cu0069u0063u0020u0073u0074u0061u0074u0069u0063u0020u0076u006fu0069u0064u0020u006du0061u0069u006eu0028u0053u0074u0072u0069u006eu0067u005bu005du0020u0061u0072u0067u0076u0029u007bu0053u0079u0073u007

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论