一、开发步骤
1、将 Java 代码编写到扩展名为 .java 的文件中。
2、通过 javac 命令对该 java 文件进行编译 。
3、通过 java 命令对生成的 class 文件进行运行。
二、编写
选择最简单的编辑器:记事本。
敲入代码 class Test{ }将文件保存成Test.java,这个文件是存放java代码的文件,称为源文件。
文件的后缀名显示为 .java,所以要把文件的扩展名显示出来。
三、编译
有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件。
在该源文件目录下,通过javac编译工具对Test.java文件进行编译。
如果程序没有错误,没有任何提示,但在当前目录下会出现一个Test.class文件,该文件称为字节码文件,也是可以执行的java的程序。
四、运行
有了可执行的java程序(Test.class字节码文件)
通过运行工具java.exe对字节码文件进行执行。
出现提示:缺少一个名称为main的方法。
因为一个程序的执行需要一个起始点或者入口,所以在Test类中的加入public static void main(String[] args){ }
对修改后的Test.java源文件需要重新编译,生成新的class文件后,再进行执行。
发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。
想要和JVM来个互动,只要在main方法中加入一句System.out.println(“Hello World");因为程序进行改动,所以再重新编译,运行即可。
五、第一个程序
public class Test{
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
六、常见问题及解决方法
1、Question
源文件名不存在或者写错
当前路径错误
后缀名隐藏问题
2、Question
类文件名写错,尤其文件名与类名不一致时,要小心
类文件不在当前路径下,或者不在classpath指定路径下
3、Question
声明为public的类应与文件名一致,否知编译失败
4、Question
编译失败,注意错误出现的行数,再到源代码中指定位置改错
七、总结与扩展
1、每一个 Java 文件都是一个 Java类,一个类的组成主要由下面几部分组成:
关键字 class
类名:Test,文件名必须和主类的名字是一致的,注意大小写。
内容:{}
主函数:main函数,主函数是一个程序的入口函数,程序执行就是执行主函数,主函数执行完了,程序也就执行完了。JVM在运行的时候,都是从 main 方法开始执行的。(可以没有主函数一个类中)
一个源文件中可以定义多个类,编译之后都会生成一个 .class 文件,但是只能定义一个公开类,且公开类的类名和文件名完全一致,公开类用 public 修饰。
Java 程序的基本组成单元是类,类中又包括属性与方法两部分,每一个应用程序都必须包含一个 main() 方法,含有 main() 方法的类称为主类。
2、编译
编译:编写好的 Java 文件 JVM 看不懂,也就不能运行,需要将写好的 Java 源文件,编译成 JVM可以看懂的 字节码文件。
在 DOS 命令行中,进入 Java 源文件的目录,使用 javac 命令进行编译。(源文件名不区分大小写,但是建议注意大小写)
命令:
javac Java源文件名.java
编译成功后,命令行没有任何提示,在源文件的目录中就会有一个和 源文件同名的 .class 文件,这个文件就是编译后的文件,是Java的可运行文件,称为字节码文件。
3、运行程序
在 DOS 命令行中,进入 java 源文件的目录,使用 java 命令进行运行。(字节码文件名(类名),严格区分大小写。)
命令:
java 类名(类名与源文件不一致,非公开类)
java 源文件名(类名与源文件名一致,公开类)
运行的时候切记不要给文件添加后缀名
Tips: 编译和运行
编译:是指将编写的 java 源文件翻译成 JVM 认知的 class 文件,在这个过程中,javac 编译器会检查我们所写的程序时候错误,有错误就会提示出来,如果没有错误就会编译成功。
运行:是指将 class 文件交给 JVM 去运行,此时 JVM就会执行我们写的程序。
4、包
(1)包的作用
① 避免类的重名问题
有了包后,类的名称就比较长了,类的全名称就变成了: 包.类名
java.util.Scanner :Scanner类的全名称
java.lang.String:String类的全名称
java.lang.System:System类的全名称
java.lang.Math:Math类的全名称
② 分类组织管理众多的类
java.io:和IO(输入输出)有关
java.util:和各种常用工具类有关
java.lang:核心系统类
java.net:和网络编程有关
java.sql:和数据库编程有关
③ 用于访问权限控制
如果某个类或某个方法的权限修饰符省略,那么就仅限于本包使用。
(2)如何声明包
语法格式:
package 包名;
注意:
① 一个 .java 源文件只能有一句
② 必须在源文件的代码首行
③ package 关键字:类似于文件夹,用于管理字节码文件,必须写在源文件的第一行。并且可以有多层包。(0~1个包)
包名的命名规范:
① 所有单词都小写,每个单词之间用 . 分割
② 习惯上用公司的域名倒置 + 模块名
(3)如何编译带包的类
编译带包的类语法:
javac -d . 源文件名.java (自动生成目录结构)
(4)如何运行带包的类
运行带包的类语法:
java 包名.类名(全限定名)
(5)如何使用其他包的类
前提:被使用的类或成员的权限修饰符的允许跨包使用
语法:
使用全名称:包.类名
使用import语句 + 简名称
说明:
① import 语句是写在 package 语句与 class 声明之间的
② 导包语句可以很多句,导入不同包的类
③ java.lang 包中的类可以不适用 import 语句,直接使用简名称
④ 可以同时导入一个包中的很多类,如 import 包.*;
⑤ 如果出现了不同的包,但是类名相同
例如: java.util.Date 与 java.sql.Date;
此时只能一个选择使用全名称,一个使用简名称,不能同时使用简名称
import 关键字:当一个类中需要引用另外一个类的方法,需要引用对应的包。(0~n个包)
注意:如果有多个包结构是相同的,用 * 代替该包结构下的所有类。