Java Unicode转义字符的小小研究

转义字符
所有的转义字符都是由 '\' 打头的
第二个字符
0-9 :八进制
u :是Unicode转意,长度固定为6位
Other:则为以下字母中的一个 b,t,n,f,r,",\
都不满足,则产生一个编译错误。

当然了,提供八进制也是为了和C语言兼容.

b,t,n,f,r 则是为控制字符.书上的意思为:描述数据流的发送者希望那些信息如何被格式化或者被表示.

Unicode转义字符非常有趣
它可以写在代码的任意位置,只要转义后是合法的.
例如:

int c=0\u003b
上面的代码可以编译通过,等同于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());
}
}

打印如下:
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0063\u006c\u0061\u0073\u0073\u0020\u0045\u0067\u0067\u0048\u0065\u006c\u006c\u006f\u007b\u0020\u0020\u0020\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0061\u0072\u0067\u0076\u0029\u007b\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0048\u0065\u006c\u006c\u006f\u002c\u0057\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

感觉有点像加密的代码一样! 当然那都是掩耳盗铃。。。
不过初看起来还是比较让人头晕的。

Unicode转义就先研究到这里,喝点水,打会游戏。。。

时间: 2024-08-03 01:58:14

Java Unicode转义字符的小小研究的相关文章

基于java语音缓存系统的研究与设计,怎么写毕业论文???是否需要做一个系统

问题描述 基于java语音缓存系统的研究与设计,怎么写毕业论文???是否需要做一个系统 这个东西是什么>??是否需要做出一系统,这个论文怎么写,谁帮写好能通过重谢 解决方案 这个应该是不需要做一个系统的,这并不是一个项目或者安卓的app,并不是偏向实践方向的,而是更偏向理论放心吧.个人理解,具体的建议你问问你的导师吧 解决方案二: 如果你什么都不会,那就胡乱抄抄类似的文章吧google总会用吧.http://www.docin.com/p-65599058.html 解决方案三: butaiqi

java swing的一个小小问题,望高手不吝赐教!

问题描述 java swing的一个小小问题,望高手不吝赐教! java swing中的JFrame加载背景图片后会覆盖掉所有可视组件,求教怎么办? 解决方案 设置下ComponentZOrder 解决方案二: 是ComponentZOrder的问题,去设置一下 解决方案三: 可能是用了drawImage方法导致的,给Frame绘制了Image和设置背景不同

Java se 7 最新特性研究(一)

从2006到现在等待了多年的jdk7终于发布了.这里将对它的一些新特做一些初步的研究: jdk7 相对于jdk6主要在以一几个方面有了非常显著的改进的提升: 首先分析其对java语言本身的改进: 二进制表示的支持(Binary Literals)的支持. 在JDK7中可以用二进制的形式表示整形数据(byte,short,int,long),这些整形类数据如果用二制表示则需0b或0B打头.如: byte aByte=(byte)0b01; short aShort=(short)0B001; in

基于JAVA技术的搜索引擎的研究与实现

搜索引擎 摘要 网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情.建立搜索引擎就是解决这个问题的最好方法.本文首先详细介绍了基于英特网的搜索引擎的系统结构,然后从网络机器人.索引引擎.Web服务器三个方面进行详细的说明.为了更加深刻的理解这种技术,本人还亲自实现了一个自己的搜索引擎--新闻搜索引擎. 新闻搜索引擎是从指定的Web页面中按照超连接进行解析.搜索,并把搜索到的每条新闻进行索引后加入数据库.然后通过Web服务器接受客户端请求后从索引数据库中搜索出所匹配的新闻. 本人在介绍

Java se 7新特性研究(二)

接上一篇http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp81  今天主要研究Java se 7中异常处理的新功能.从今天开始正在将jdk7的说法改为java se 7跟oracle官网的一致 一.新增了try-with-resource 异常声明 在JDK7中只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用try-with-resource来实现异常处理和资源关闭.下面做一下 JDK7以前:

【转载】对一致性Hash算法,Java代码实现的深入研究

原文地址:http://www.cnblogs.com/xrq730/p/5186728.html   一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性Hash算法的算法原理做了详细的解读. 算法的具体原理这里再次贴上: 先构造一个长度为232的整数环(这个环被称为一致性Hash环),根据节点名称的Hash值(其分布为[0, 232-1])将服务器节点放置

Java中异常机制的研究

首先Java的异常是面向对象的.一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里. Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally.1.异常处理: 在Java语言的错误处理结构由try,catch,finally三个块组成.其中try块存放将可能发生异常的Java语言,并管理相关的异常指针:catch块紧跟在try块后面,用来激发被捕获的异常:final

Java中“异常机制”深入研究

由于本文旨在探讨Java"异常机制"的深层原理,因此关于"异常"的使用方法都不做详细说明.首先看一段非常熟悉的用于打开一个文件的C程序段: FILE *fp; fp=fopen(filename,"rw"); if(fp==NULL){ printf("cannot open file\n"); exit(0); } 在这段程序中,if条件语句中的一段用来处理没有找到指定文件,或者其它原因无法正确打开指定文件.可是如果遇到一个

Java的垃圾回收机制研究

一.谁在做Garbage Collection? 一种流行的说法:在C++里,是系统在做垃圾回收;而在Java里,是Java自身在做. 在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存.这是流行的说法.确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可以回收这块空间了.这个要求,对编码者来说,是件很麻烦.很难做到的事.随便上哪个BBS,在C/C++版块里总是有一大堆关于内存泄漏的话题. Java采用一种不同的,很方便的方法:Garbage Collecti