Java文件上的Dos2unix



如果在编译之前对 Java 源文件运行 dos2unix 命令,是否有任何影响或影响?Java 文件将从 Linux 中的 CVS 存储库下载,然后由 Ant 脚本编译到 jar 中。谢谢。

甚至不需要测试这一点(理论上(:在Java语言中,换行符没有任何语义意义。因此,存在是无关紧要的(对于编译器而言(。

因此,人类读者会发现查看零换行符的源代码非常不愉快,或者在它们合法的任何地方使用换行符 - 对于编译器来说,如前所述:没关系。

因此,像dos2unix这样的工具不应该对源代码进行任何可能产生"语义"差异的更改。

当然:真正的答案是:不要花时间担心换行符。从 1999 年到 2018 年,将它投入到移动整个系统中(例如,用 git 替换 CVS,用 maven/gradle 替换 Ant(。

No.它所做的只是处理行尾。

实践测试

首先,我创建了一个带有 Linux 行尾的测试文件,称为 Main.java ,毫不奇怪,在 Linux 上编译。

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0a [n]  0x7d [ }]  0x0a [n]  
0x0a [n]

转换为DOS结局给出了这个:

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0d [r]  0x0a [n]  0x7d [ }]  
0x0d [r]  0x0a [n]  0x0d [r]  0x0a [n]

它仍然编译,转换回来给出:

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0a [n]  0x7d [ }]  0x0a [n]  
0x0a [n]

和以前一样

行尾

Windows(dos(和Linux/Mac(unix(行尾之间的区别在于,在unix上结束的行是n,而以dos结尾的行是rn

结果

  • 由于 unix2dos/dos2unix 只更改行尾,因此不会更改内容
  • 至少在 Linux 上,javac 可以编译任一行都成功结尾的源文件。

相关内容

  • 没有找到相关文章

最新更新