1.4-Java语言(Hello World)

1.4 Java程序开发体验--Hello World
1.  将Java代码编写到扩展名为.java的文件中。
2.  通过javac命令对该java文件进行编译。
3.  通过java命令对生成的class文件进行运行。


步骤一:编写
•  选择最简单的编辑器记事本。
•  敲入代码

class Demo
{}
•  将文件保存成Demo.java,这个文件是存放java代 码的文件,称为源文件。

步骤二:编译
•  有了java源文件,将其编译成JVM可以识别的文件。
•  在该源文件目录下,通过javac编译工具对Demo.java文件进行编译。
•  如果程序没有错误,没有任何提示,但在当前目录下会出现一个Demo.class文件,该文件称为字节码文件,也是可以执行的java的程序。

步骤三:运行
•  有了可执行的java程序(Demo.class字节码文件)
•  通过运行工具java.exe对字节码文件进行执行。
•  出现提示:缺少一个名称为main的方法。
•  因为一个程序的执行需要一个起始点或者入口,所以在Demo类中的加入public static void main(String[] args){}
•  对修改后的Demo.java源文件需要重新编译,生成新的class文件后,在进行执行。
•  发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。
•  想要和JVM来个互动,只要在main方法中加入一句
•  System.out.println("hello java");在重新编译,运行即可。

深入细节: 类名和文件名的关系

一个.java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?其实文件名是无所谓的,因为将来用javac进行编译的时候,最终会生成多个 .class 文件,每一个类对应个 .class 文件。运行时只要运行对应的 .class文件就可以了,这时.java文件就显得没什么用了( 运行时不需要 )。
此段代码文件名为Hello,java,编译通过

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

class Hello3 {
	public static void main(String[] args) {
		System.out.println("Hello3");
	}
}
但是当你的类被public修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在A.java文件中,否则在用javac编译时会提示错误:类A是公共的,应在名为A.java的文件中声明)。也就是说在同一个.java文件中,不应该出现2个或2个以上的public class。如果有一个public class类,就应该让文件名和此类名相同;那如果没有呢,即所有的class都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java的。
此段代码文件名为测试,java,编译通过
public class 测试 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("类名是中文也可以");
	}

}

JAVA把一个.java文件叫做一个编译单元(Compiling Unit), 一个编译单元中可以有N个类, 但最多只能有一个public类. 而且, 如果有一个public类的话, 那么这个类的类名必须与.java文件的名称一致.

对于这个规定, 我个人认为是与JAVA的隐藏机制和开源策略有关的.

因为, 根据JAVA的隐藏机制, 只有public的类才可以被其他人直接使用, 也就是说, 对于其他人来说, 他所熟悉的只有这个public类的类名, 这样, 如果源文件的名字和它保持一致, 就可以非常方便地让别人找到这个源文件.

 

总结

1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
3.一个Java文件中只能有一个public类;
4.如果文件中不止一个类,文件名必须与public类名一致;
5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值