全面解析“HelloWorld”你真的了解了每个步骤的含义了吗?

GBK是什么,编码又是什么,为啥使用在cmd里用javac来编译.java文件.........


前言

我们在初学java的时候都应该用记事本输出过HelloWorld吧,但是里面的每一步你真的知道什么意思了吗?我们一步一步的解析,一步一步的分析,来回味一下我们痛苦的开端吧。

一、使用记事本创建HelloHorld

要是新手小白只想学习如何使用记事本创建并有运行文件可以只看正文部分黑体字。

首先创建记事本,修改记事本后缀为.java,并将代码复制粘贴上,如图中红色圈里的那样。至于蓝色圈中的UTF-8是什么一会再说。对于刚刚学习java的小白还是自己亲自手打进去的好,不需要知道什么意思,认认单词也好。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

那么第一个问题来了

1.为什么文件名要和类名一致?

记事本的文件名要和类名一致即public class后面跟着的HelloWorld就是类名,文件全名为HelloWorld.java,为啥呢?Java最初发明的动机,是要解决C++在工程实践方面的一些沉疴痼疾。如果看过一些“无节操”的C++项目,会发现这些工程在划分源码文件方面并没有太多好的规范,经常会出现一个文件包含众多类、成千上万行的代码,有的甚至是整个项目都写在一个文件当中,即便在现代IDE的帮助下,维护起来都非常头晕,更不用说Java诞生的90年代初了。因此Java就硬性做了这个规定。

2. String[] args 是什么意思,为什么写在这?

它是一个数组。在命令行中比如运行 Test.class 文件,你可以这样写:

java Test runoob

相当于给数组传入了一个 runoob 字符串。也可以打印出来,可以作为简单的输入。

例如:

public class Test {
    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}

运行以上实例,输出结果如下:

$ javac Test.java
$ java Test runoob
runoob

此处注意,main 是一个程序的入口,一个 java 程序运行必须而且有且仅有一个 main 方法。args[0] 是你传入的第一个参数,args[1]是传入的第二个参数,以此类推。String[] args 还有一种等价的写法:   String... args      前者为数组形式, 后者为可变参数形式。前者用得较多, 但是看到后者也应认识。

使用win+R面板后在里面输入cmd调出控制命令符

图中的地址不是在HelloWorld.java的目录之下,需要进行跳转,不然无法最其进行操作,可以用cd进行操作,常用的命令可以点击这篇文章http://t.csdn.cn/xSLWI

也可以使用其他方式,在HelloWorld.java文件所在目录的文件搜索框中输入cmd,直接进入该文件目录下

我们使用了两个命令 javac 和 java。

javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java。

运行javac命令后,如果成功编译没有错误的话,会出现一个 HelloWorld.class 的文件。

java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名,如: java HelloWorld。

注意:java命令后面不要加.class。

如果运行后出现错误显示编码错误的话,需要修改第二张图片蓝色圈中是否为UTF-8。
 3.UTF-8是什么?编码是什么?

首先我们来简单了解一下编码。对于计算机来讲,它只能识别由0和1组成的二进制信息,不管是文件也好、字符串也好到了机器这都会变成由01组成的机器码。字节是java基本的存储单位,而位是最小的存储单位,一位(bit)可以理解为一个小方框【】,里面只能存放0和1,一个字节占8位,也就是八个小方框,每个方框有两中选择,2的8次方256,1字节可以表示256种,针对这个,上个世纪60年代美国制定了一套方案,他们把英文字母以及常用的符号(都可称为字符,这个时候1字符=1字节)与二进制进行了关联,做了统一的规定,这个规定被称为是ASCII码(注意,ASCII只有128个,0-127,最高位为0,2的七次方=128,128到255被称为“扩展字符集”,主要是为了表示一些非美国的字母和符号),根据字符集就可以进行转换为机器码。在此强调,在转换成字符集后还需要确定编码格式,也就是转换成0  1的方式。一个字节足以满足使用英文的国家,但是我们中国怎么办?

这时候先驱们再次登场,先驱们经过努力研究当然研究出了我们的字符集,在针对我们的字符集进行创建新的编码格式:GB2312   GB2312   GB18030  GBK等等,但是每个国家的语言都不一样,这样编码标准也得不到统一,为了解决以上问题,一个叫ISO(国际标准化组织)的组织出手了,他们制定了一套标准叫Unicode,这套标准包含了这个星球上所有的文字和符号,废除了地方性质的编码标准,真正做到了全球大统一

新的字符集出现了,对应的也要有新的编码格式(也就是翻译成机器码的格式),“当当当”,utf-8闪亮登场!unicode还需要编码格式来定义,utf-8就是其中非常重要、使用非常广泛的一种。这种编码格式以8位为一个编码单位把抽象的字符规定翻译成了具体可以被用来存储和通信的字符,双方只要约定用这一种编码规定就不会出现乱码情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值