马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-1-25 22:06 编辑
【Java教程(原创)索引帖】
让我们先看下下面这个简单的Java源代码,下面的Java源文件中Hello.java是由名字分别为Hello和Student的两个类组成的。
Hello.javapublic class Hello{
public static void main(String args[]){
System.out.println("这是一个简单的Java程序");
Student stu = new Student();
stu.speak("Hello World!");
}
}
class Student{
public void speak(String s){
System.out.println(s);
}
}
运行如下:
关于上面这段代码的几点说明:
(一)源文件的编写与保存
1>编写源文件
使用一个文本编辑器(如notepad++或记事本)来编写上面这个例子
在Java源程序中,语句所涉及的小括号及标点符号都是在英文状态下输入的,比如“大家好!”中的引号必须是英文状态下的引号,而字符串里面的符号不受汉字字符或英文字符的限制。
2>保存源文件
如果源文件中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么源文件的名字必须与这个类名字完全相同,扩展名是.java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了。
上述的源代码的文件名必须命名为Hello.java。我们将Hello.java保存到D:\FishC_Java文件夹中。
在保存源文件时,不可以将源文件命名为hello.java,因为Java语言是区分大小写的。在保存文件时,必须将“保存类型”选择为“所有文件”,将“编码”选择为“ANSI”。如果在保存文件时,系统总是自动给文件名尾加上“.text”(这是不允许的),那么在保存文件时可以将文件名用双引号括起。如下:
(二)编译
在保存了Hello.java源文件后,就要使用Java编译器(javac.exe)对其进行编译了。
1>编译器(javac)
现在进入逻辑分区D的FishC_Java目录中,使用编译器javac编译源文件,如下所示:
2>字节码文件(.class文件)
如果源文件中包含多个类,编译源文件将生成多个扩展名为.class的文件,在每个扩展名为.class文件中只存放一个类的字节码,其文件名与该类的名字相同,这些字节码文件被存放在与源文件相同的目录中。
如果源文件中有语法错误,编译器将给出错误提示,不生成字节码文件,编写者必须修改源文件,然后再进行编译。
编译上面那个例子的源文件将得到两个字节码文件,即Hello.class和Student.class。如果对源文件进行了修改,必须重新编译,再生成新的字节码文件。
3>字节码的兼容性
JDK1.5版本以后的编译器和以前版本的编译器有一个很大的不同,即不再向下兼容。也就是说,如果在编译源文件时没有特别约定,JDK1.6编译器生成的字节码只能在安装了JDK1.6或JRE1.6的Java平台环境中运行。可以用“-source”参数约定字节码适合的平台。如果Java程序中并没有用到JDK1.6的新功能,在编译源文件时可以使用“-source”参数,例如:
javac -source 1.4 文件名.java
这样编译生成的字节码可以在1.4版本以上(含1.4版本)的Java平台上运行。如果源文件使用的系统类库没有超出JDK1.1版本,在编译源文件时应当使用-source参数,取值为1.1以使字节码有更好的可移植性。
-source参数的可取值有1.7、1.6、1.5、1.4、1.3、1.2、1.1。
如果在使用JDK1.7编译器时没有显式地使用“-source”参数,JDK1.7编译器将默认使用该参数,并取值1.7。
注:在编译时,如果出现提示file Not Found,请检查源文件是否在当前目录中,比如D:\FishC_Java中,以及检查源文件的名字是否被错误地命名为hello.java或hello.java.txt。
(三)运行
1>应用程序的主类
一个Java应用程序必须有一个类含有public static void main(String args[])方法,称这个类是应用程序的主类。args[]是main方法的一个参数,是一个字符串类型的数组(注意String的第一个字母是大写的),在以后非安全会给你们讲下这个参数怎么使用。上面的例子中的Java源程序中的主类是Hello类。
2>解释器(java)
使用Java虚拟机中的Java解释器(java.exe)来解释、执行其字节码文件。Java应用程序总是从主类的main方法开始执行,因此,需进行主类字节码所在目录,比如D:\FishC_Java,然后使用Java解释器(java.exe)运行主类的字节码,如下所示:
当Java应用程序中有多个类时,Java解释器执行的类名必须是主类的名字(没有扩展名)。当使用Java解释器运行应用程序时,Java虚拟机首先将程序需要的字节码文件加载到内存,然后解释执行字节码文件。当运行上述Java应用程序时,虚拟机将Hello.class和Student.class加载到内存。当虚拟机将Hello.class加载到内存时,就为主类中的main方法分配了入口地址,以便Java解释器调用main方法开始运行程序。
3>注意事项
在运行时,如果出现错误提示Exception in thread"main"java.lang.NoClassFoundError,请检查主类中的main方法,如果编写程序时错误地将主类中的main方法写成public void main(String args[]),那么,程序可以编译通过,却无法运行。如果main方法书写正确,请检查是否为系统变量ClassPath指定了正确的值。
需要特别注意的是,在运行程序时,不可以带有扩展名:
D:\FishC_Java\>java Hello.class
也不可以用以下方式(带着目录)运行程序:
java D:\FishC_Java\Hello
下面再看一个简单的Java应用程序,不要求鱼油们看懂程序的细节,但鱼油们必须知道怎样保存下面的Java源文件、怎样使用编译器编译源程序、怎样使用解释器运行程序。class Rect{
double width;
double height;
double getArea(){
return width * height;
}
}
public class RectangleArea{
public static void main(String args[]){
Rect rectangle;
rectangle = new Rect();
rectangle.width = 1.819;
rectangle.height = 1.5;
double area = rectangle.getArea();
System.out.println("矩形的面积:" + area);
}
}
运行如下:
【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。
|