稍微深入一点的分析会认为该程序应该打印16,因为两个Unicode转义字符每一个在源文件中都需要用6个字符来表示,但是它们只表示字符串中的一个字符。因此这个字符串应该比它的外表看其来要短10个字符。 如果你运行这个程序,就会发现事情远不是这么回事。它打印的既不是26也不是16,而是2。 理解这个谜题的关键是要知道:Java对在字符串字面常量中的Unicode转义字符没有提供任何特殊处理。编译器在将程序解析成各种符号之前,先将Unicode转义字符转换成为它们所表示的字符[JLS 3.2]。因此,程序中的第一个Unicode转义字符将作为一个单字符字符串字面常量("a")的结束引号,而第二个Unicode转义字符将作为另一个单字符字符串字面常量("b")的开始引号。程序打印的是表达式"a".length()+"b".length(),即2。
专业领域包括成都网站设计、成都网站建设、商城网站开发、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,成都创新互联的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
JAVA中转义字符:
1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符
2.Unicode转义字符:\u + 四个十六进制数字;0~65535
\u0000:空字符
3.特殊字符:就3个
\":双引号
\':单引号
\\:反斜线
4.控制字符:5个
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
点的转义:. == u002E
美元符号的转义:$ == u0024
乘方符号的转义:^ == u005E
左大括号的转义:{ == u007B
左方括号的转义:[ == u005B
左圆括号的转义:( == u0028
竖线的转义:| == u007C
右圆括号的转义:) == u0029
星号的转义:* == u002A
加号的转义:+ == u002B
问号的转义:? == u003F
反斜杠的转义: == u005C
直到你想输出的盲文的 unicode码,可以直接用
System.out.println("\u2856");
控制台就是盲文
java输出货比符号测试方法:
import java.text.NumberFormat;
import java.util.Locale;
public class FormatTest {
public static void main(String args[]) {
// 不使用格式化输出数
double d = 10.0 / 3.0;
System.out.println("无格式化输出:" + d);
// 使用本地默认格式输出数
NumberFormat numberFormat = NumberFormat.getNumberInstance();
//numberFormat.setMaximumFractionDigits(4);
//numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println("本地默认格式输出数:" + numberString);
// 使用本地默认格式输出货币值
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
System.out.println("本地默认格式输出货币值:" + currencyFormat.format(d));
// 使用本地默认格式输出百分数
NumberFormat percentFormat = NumberFormat.getPercentInstance();
System.out.println("本地默认格式输出百分数:" + percentFormat.format(d));
// 在不同的国家和地区数字表示的格式也有区别。如德国
// 使用德国的格式化输出数
NumberFormat numberFormatG = NumberFormat
.getNumberInstance(Locale.GERMANY);
System.out.println("德国数字输出形式:" + numberFormatG.format(d));
// 使用德国货币输出形式
NumberFormat currencyFormatG = NumberFormat
.getCurrencyInstance(Locale.GERMANY);
System.out.println("德国货币输出形式:" + currencyFormatG.format(d));
// 使用美国货币输出形式
NumberFormat currencyFormatA = NumberFormat
.getCurrencyInstance(Locale.US);
System.out.println("美国货币输出形式:" + currencyFormatA.format(d));
// 使用德国百分数输出形式
NumberFormat percentFormatG = NumberFormat
.getPercentInstance(Locale.GERMANY);
System.out.println("德国百分数输出形式:" + percentFormatG.format(d));
System.exit(0);
}
}
java中的特殊符号不能直接输出,需要使用转义字符进行转义才能正常输出,如下:
package com.bean;
public class Change {
public String ChangeText(String text){
char[]cs=text.toCharArray();
StringBuffer sb = new StringBuffer();
for(int i = 0 ; ics.length; i++){
char c = cs[i];
if(c==' '){
sb.append("nbsp;");//将空格转换成nbsp
}else if(c=='\n'){
sb.append("br");
}else if(c==''){
sb.append("gt;");
}else if(c==''){
sb.append("lt");
}else if(c==''){
sb.append("amp");
}else{
sb.append(c);
}
}
return sb.toString();
}
}
输出的转义字符为: \n,,,,一般用于解析html文件
首先将你的特殊符号进行编码,
例如a.txt中的符号为★
在cmd中找到文件所在的目录,执行以下命令
native2ascii -encoding gb2312 a.txt b.txt
这样就会将ISO编码的a.txt转换成GB2312编码的格式了,同时保存到b.txt中
输出就用b.txt中已经编码的内容
//native2ascii这个工具是jdk自带的一个东东,所以如果path都设定正确就可以直接运行了
参考网址:
第二种方法:直接输出它的unicode(U+FFE5)