深入理解:cmd下java命令启动JVM运行class文件时,可以自动识别不同编码编译后的class文件并加之运行

总结如下:

前提:
1.cmd默认为GBK编码格式;
2.源代码正确

一:程序源代码以GBK格式保存时:

(1)用javac命令去编译这个源代码,一定会OK
(2)用java命令去执行这个编译后的字节码文件,一定会OK

二:程序以源代码UTF-8无BOM格式保存时:

(1)用javac命令去编译这个源代码,要指明使用什么字符集编码格式,才会编译OK,否则报错。(示例命令:javac -encoding UTF-8 HelloWorld.java)
(2)用java命令去执行这个编译后的字节码文件,一定会OK(示例命令:java HelloWorld)

注意:
BOM:即字节顺序标记;它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。即:指明这个文件以什么编码格式保存的三个隐藏代码;
           1.一般记事本会自动加上,若不想添加BOM,就将源代码保存为某字符集无BOM格式。
           2.一般IDEA等IDE就不会主动加隐藏代码BOM

三:程序以源代码UTF-8格式保存时(有BOM隐藏代码):

(1)用javac命令去编译这个源代码,会报错,原因就是cmd中无法解析BOM三个隐藏代码
(2)解决方法:将源代码重新保存为UTF-8无BOM格式。再重复上文(二)的步骤,就OK

四:为什么任意编码格式的java源码都可以被编译?

1.编码不影响代码的正确性,只是不同字符集编码标准不一样;

就相当于,你用英文表达你好,和你用中文表达你好一样,只不过是各个国家标准不同而已
2.cmd下java命令启动JVM运行class文件时,可以自动识别不同编码的class文件并加之运行(比喻:无论我说中文还是英文,它都听得懂!)

五:程序以其他字符集编码格式保存时,依此类推。

六·注意:

1.这只是个人的经验总结,没有涉及底层源码。
2.底层源码应该与“编译原理”有关。本人暂不了解。
3.若有错误,敬请斧正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ideal-cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值