易截截图软件、单文件、免安装、纯绿色、仅160KB

Java解惑2 21我的类是什么II

下面的程序所要做的事情正是前一个谜题所做的事情,但是它没有假设斜杠符号就是分隔文件名组成部分的符号。相反,该程序使用的是java.io.File.separator,它被指定为一个公共的String域,包含了平台相关的文件名分隔符。那么,这个程序会打印出其正确的、平台相关的类文件名吗?
package com.javapuzzlers;
import java.io.File;
public class MeToo {
public static void main(String[] args){
System.out.println(MeToo.class.getName().
replaceAll("\\.", File.separator) + ".class");
}
}
这个程序根据底层平台的不同会显示两种行为中的一种。如果文件分隔符是斜杠,就像在UNIX上一样,那么该程序将打印com/javapuzzlers/MeToo.class,这是正确的。但是,如果文件分隔符是反斜杠,就像在Windows上一样,那么该程序将打印像下面这样的内容:
Exception in thread "main"
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:558)
at java.util.regex.Matcher.appendReplacement(Mather.
java:696)
at java.util.regex.Matcher.replaceAll(Mather.java:806)
at java.lang.String.replaceAll(String.java:2000)
at com.javapuzzlers.MeToo.main(MeToo.java:6)
尽管这种行为是平台相关的,但是它并非就是我们所期待的。在Windows上出了什么错呢?
事实证明,String.replaceAll的第二个参数不是一个普通的字符串,而是一个替代字符串(replacement string),就像在java.util.regex规范中所定义的那样[Java-API]。在替代字符串中出现的反斜杠会把紧随其后的字符进行转义,从而导致其被按字面含义而处理了。
当你在Windows上运行该程序时,替代字符串是单独的一个反斜杠,它是无效的。不可否认,抛出的异常应该提供更多一些有用的信息。
那么你应该怎样解决此问题呢?5.0版本提供了不是一个而是两个新的方法来解决它。第一个方法是java.util.regex.Matcher.quoteReplacement,它将字符串转换成相应的替代字符串。下面展示了如何使用这个方法来订正该程序:
System.out.println(MeToo.class.getName().replaceAll("\\.",
Matcher.quoteReplacement(File.separator)) + ".class");
引入到5.0版本中的第二个方法提供了一个更好的解决方案。该方法就是String.replace(CharSequence, CharSequ


相关文档:

JNA实现Java调用Fortran

在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......

中科院分词工具imdict chinese analyzer学习 java分词

下载链接http://ictclas.org/Down_OpenSrc.asp
简单介绍:
 imdict-chinese-analyzer是 imdict智能词典的智能中文分词模块,作者高小平,算法基于隐马
尔科夫模型(Hidden Markov Model, HMM),是中国科学院计算技术研究所的ictclas中文分词程序
的重新实现(基于Java),可以直接为lucene搜索引擎提供中文分词支持 ......

Linux下java环境变量设置方法

转贴:
现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java环境配置吧,希望对大家有帮助。
一. 下载jdk5.0 for linux
  到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件jdk-1_5_0_05-li ......

【转载】Java/Hibernate/标准SQL 数据类型对应表


Java数据类型
Hibernate数据类型
标准SQL数据类型
(PS:对于不同的DB可能有所差异)
byte、java.lang.Byte
byte
TINYINT
short、java.lang.Short
short
SMALLINT
int、java.lang.Integer
integer
INGEGER
long、java.lang.Long
long
BIGINT
float、java.lang.Float
float
FLOAT
double、java.lang.Doubl ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号