JAVA编程笔记02-字符、数组
文本文件中的“\r”和“\n”
首先我们了解一下回车和换行:
(char)13代表回车,(char)10代表换行。
回车是把光标或指针移动到一行的开头,换行是把光标移动到下一行的相同位置。
在不同的系统中“\r”和“\n”可能意义不同。
下图直接说明了“\n”=(char)10,“\r”=(char)13,在记事本中“\r”、“\n”、“\r\n”“\r\n”代表一个换行,“\n\r”代表两个换行。记事本的换行等于加上“\r\n”。
这就很奇怪了,如果“\r”=13,“\n”=10,那么“\n\r”应该等同于“\r\n”,并且“\r”不能换行。然而抱歉,没有查到相关资料,我无法解释。
请注意控制台上返回的结果中没有“4”,经过多次测试证实:在Java的String字符串中,单独的“\r”(前或后面没有跟“\n”)前面或后面的一个字符会被忽略。实际上String的长度没有变,表明被忽略的内容其实还在。这很奇怪,希望知道的人评论一下吧。
“/r”和“/n”算位置吗?
算,并且每个占一个字符,只是readLine()不会返回二者。用read()可以读到。
试了下读第二行,也没有返回“\r”和“\n”,没有截图。
使用Write()方法写完数据后如果不关闭Writer()(“.close()”),后面直接跟上的Reader不会读取刚刚写下的内容,这说明Writer的工作是在close()时开始进行的;
Arrays空指针错误
用Arrays.copyOf(array1,newlength)产生的新数组末位是null而不是一个地址。因此如果在代码中用到了:
array1 = Arrays.copyOf(array1,newlength);
之后没做特殊处理又引用到:array1[array1.length-1][n],n∈自然数,编译器就会报错,因为array1[array1.length-1] == null。
处理办法之一是赋一个数组(的地址)给对应位置。