当使用Integer.value("1")的时候却发现抛出了一个NumberFormatException异常,提示信息是For input string: "1",百思不得其解,后来打断点调试发现,“1”这个字符串中居然有两个char字符,第一个为“\ufeff”,网上查资料才明白,因为我这个“1”是从文本中使用inputStream读入的,而文本的保存编码为UTF-8,重点在于windows默认的txt文本编辑器,保存编码为UTF-8时,是会带上BOM的,会在文本开头添加一个“\ufeff”字符,而我的“1”的字符刚好在文本文件的开头,使用editPlus编辑文本,保存时选择没有带BOM的UTF-8格式问题就解决了。
再附上BOM的用途:通常BOM是用来标示Unicode纯文本字节流的,用来提供一种方便的方法让文本处理程序识别读入的.txt文件是哪个Unicode编码(UTF-8,UTF-16BE,UTF-16LE)。