学习java的一点心得
Posted LackMemory
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习java的一点心得相关的知识,希望对你有一定的参考价值。
Java的程序源码存放在后缀名为.java的文件中,但是我们知道源码是无法直接被机器识别并执行的,源码是给人读的,是一堆英文字母;而机器能理解的是0和1。所以源码必须经过编译生成二进制文件才能被机器执行。
和C语言不同的,C生成的二进制文件可以直接交给操作系统执行;而class文件则只能交给jvm执行,jvm跟操作系统交互并最终执行代码。这相当于在代码和操作系统之间构建了一个中间层,这个中间层就是jvm,而jvm是java能跨平台的根本原因。C语言编写的程序为什么不能跨平台呢?因为不同的平台定义了不同的指令,指令就是二进制代码;所以C语言要为不同的平台生成不同的二进制代码,这就是不能跨平台——编译后的二进制代码在各个平台无法通用、兼容。对比Java,它生成的二进制代码在哪个平台都是一样的,只要这个平台安装了jvm,代码就能运行。显然,能做到这一点是因为jvm在各个平台是不一样的,由jvm去兼容复杂的平台,屏蔽操作系统底层的细节。这样java的二进制代码就不用去关心自己在哪个平台,能不能运行了。
下面从命令行的角度谈一谈源码和二进制文件。java的二进制代码存放在后缀为.class的文件中,它是.java文件编译后生成的。当然,java软件产品交付的时候给的是class文件,肯定不能给源码,这都是商业秘密、劳动成果、知识产权。
Java的所有代码都封装在类中,所以源文件中就是一个个的Class,通常情况下,是一个Class。
java文件是所谓的编译单元,class文件是运行单元。如果一个编译单元内定义了多个class,那么编译后就会生成多个class文件。如下,在App.java定义了两个class:
class App0
class App1
编译后:
javac App.java
ls
App.java App0.class App1.class
首先一点就是,文件名和类名有了绑定。本来,在没有类被public修饰的情况下,java文件名随便起,就比如上面的情况。但是如果源文件中有一个类被public修饰了,那么文件名必须和这个类名一致,否则编译器会报错。仍以App.java为例:
public class App0
class App1
javac App.java
App.java:1: 错误: 类App0是公共的, 应在名为 App0.java 的文件中声明
public class App0
^
1 个错误
public class App
public class App1
javac App.java
App.java:3: 错误: 类App1是公共的, 应在名为 App1.java 的文件中声明
public class App1
^
1 个错误
综上,一个java文件中最多只能有一个类被public修饰,如果存在其它的类,这些类的访问权限只能是default;如果有一个类被public修饰了,那么文件名必须跟这个类名保持一致。
以上是关于学习java的一点心得的主要内容,如果未能解决你的问题,请参考以下文章