服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java入门(4) 第一个java程序


  摘要

  通过本章的学习,读者应了解java语言的两种程序:应用程序、小应用程序的基本结构,能够编译、运行java应用程序和小应用程序。


--------------------------------------------------------------------------------



  本章目标:

  通过本章的学习,读者应了解java语言的两种程序:应用程序、小应用程序的基本结构,能够编译、运行java应用程序和小应用程序。

  4.1 java应用程序(application)

  与前几章不同,在这一章节里,我们将先一起动手做一做,体会一下。然后再结合这个实践的体会,为大家做相应的讲解。

  前面东一榔头,西一棒槌闲扯许多与java相关的知识,想必许多读者已经感到几分倦意了,别急,我们现在就一起来编写一个java应用程序,然后一起编译、运行它。

  1. 进入msdos方式,新建一个学习目录:


c:window> md c:javastudy
c:window> cd c:javastudy



  注意:

  因为使用jdk完全是基本命令行的,所以我们今后会经常在“ms-dos方式”下工作,而java程序是在windows下运行的,所以不能直接使用msdos,而应在windows中运行ms-dos窗口。

  2. 编辑java语言应用程序(java application)源程序:

  你可以使用任何编辑器书写java源程序,在此我建议你使用windows的写字板,你可以直接在ms-dos窗口调用它,而且这样使用也更方便,不会在存盘时遇到多出个“.txt”的扩展名的麻烦:


c:javastudy> notepad helloworld.java



  注意:

  当你输入文件名helloworld.java时,请一定要按照例子中的样式输入,要区分大小写。至于为什么?我们会在后面给出解答。

  这时,将会自动回到windows桌面,然后将出现一个形如下图的对话框,提示你要编辑的文件helloworld.java并不存在,是否新建一个:


  图4-1 提示对话框

  单击“是(y)”按钮继续,这时就会出现你十分熟悉的“记事本”程序界面,你输入下面的程序代码,然后存盘退出。

  源程序:helloworld.java


public class helloworld
{
public static void main(string args[])
{
system.out.println("hello world!!");
}
}



  3. 首先在任务栏上点击“ms-dos方式”任务项,回到刚才打开的那个ms-dos窗口。程序写完之后,我们就要编译它了!输入命令:


c:javastudy> javac helloworld.java



  如果一切正常的话,20秒钟左右,将回到命令提示符“c:javastudy”,没有任何错误提示就表明编译成功了。编译成功后,你可以通过dir命令观察到,编译生成了一个名叫helloworld.class的文件。这个文件是存放的就是java伪编译生成的字节码。

  注意:

  笔者经常发现有些初学者会遇到一个错误:bad command or file name,这就是没有设置java的路径,请确保c:jdk1.2in在搜索列表中。

  4. 编译完成后,我们就可以执行这个程序了。由于编译生成的是字节码,所以并不能直接运行,需要使用java的解释器来行。输入命令:


c:javastudy> java helloworld



  注意:

  注意,在这个命令中应该是helloworld,而不是“helloworld.class”,更不是“helloword.java”,请一定要注意。

  这个程序的结果如下图所示:


  图4-2 helloworld程序的输出

  也就是说,做完了以上工作之后,我们会在ms-dos窗口中得到一行输出:hello world!!

  这就是这个java应用程序的输出结果。它可能并不有趣,但通过这个简单的例子,我们学会了编译、运行一个java应用程序。

  现在,我们已经看到了这个程序的运行结果,接下来,我们就一起来看一下这个程序的结构。

  1. 粗看程序

  我们先粗略地观察一下这个仅有7行的程序,应该可以发现两个特点:

  1) 使用符号“{”、“}”标记程序段的开始和结束;

  2) 使用“;”标记语句结束;

  这不是与c/c++语言一样吗!

  2. 细看程序

  接着,我们使用逐层解析法来仔细地阅读一下这个程序:

  1) 我们先看程序的最外层:


public class helloworld
{
………
}



  很明显,public class helloworld包括了所有的程序段,也就是说这个程序就是public class helloworld,我们从字面上来理解一下:

  public:公众、公用的;

  class:类;

  也就是说,这是一个类,一个公用的类,它的名字叫做“helloworld”,这整个程序就是helloworld类。

  2) 然后看内面一层:


public static void main(string args[])
{
……
}



  那么在这个类里,有些什么东西呢?我们看到了,在helloworld类中只有一段程序(因为只有一组{},说明只有一段)。这一段就不那么直观了,不过大家注意到没有这一段程序中有一个很重要的“线索”:main(),如果熟悉c/c++语言的都应该知道这是一个c/c++程序的入口函数呀,程序就从这里开始执行的。

  那么我告诉你,main()对于java应用程序来说,也是一个十分重要的方法,因为java解释器会从main()开始解释。不过这里的的main()不叫函数,而叫方法。

  3) 最后分析一下最里层:


system.out.println("hello world!!");



  这最里面的一层,就是main()方法中程序语句。对,就是它让屏幕中出现了hello world!!的。我们一起试着阅读一下:

  system:系统

  out:输出

  println:这个单词倒没有,但print大家总明白吧,打印!!

  明白了,大概就是说往系统的输出界面(屏幕)上打印东西,什么东西呢?对,就是括号内的字符“hello world!!”。明白了吗?

  到这里,我们应该对这个程序有了更深的了解了,也对java应用程序的结构也有一些认识,不过这仅是皮毛,更详细、具体的内容和困难在以后的章节中等待着您呢!

  一些提示:

  现在请大家想一想在前面留下的思考,为什么输入java helloworld来执行这个程序,而不java helloworld.class呢?看你是不是有答案。

  自测练习

  练习一:试着使用以下两个命令调用java解释程序,分别写出它们的结果:

  1) java helloworld.java

  ____________________________________________________

  2)java helloworld.class

  ___________________________________________________

  练习二:将下面的java程序welcome.java输入电脑;接着编译、运行一下,然后回答下面所列出来的问题。

  1)将编译、运行这个程序的命令写出来:

  _________________________________

  _________________________________

  2)请说说,程序运行的结果是什么?

  源程序:welcome.java


import javax.swing.*;
public class welcome
{
public static void main(string args[])
{
joptionpane.showmessagedialog(
null,
“welcome to world of java!”,
“welcome, dear friend!”,
joptionpane.plain_message);
system.exit(0);
}
}



  练习答案

  练习一:

  1)exception in thread "main" java.lang.noclassdeffounderror: helloworld/java

  2)exception in thread "main" java.lang.noclassdeffounderror: helloworld/java

  输出都一样,找不到helloworld这个类。也就是说,使用java解释器进行解释时,后面的参数应该是类名。

  练习二:

  1) 命令为:


c:javastudy> notepad welcome.java
c:javastudy> javac welcome.java
c:javastudy> java welcome



  2) 这个程序的输出如下图所示:


  图4-3 java应用程序welcome.java的运行结果

  在这个程序的编译、执行时,你都将花费挺长的时间,由此可以看出java程序的执行效率的确是要低一些的。

  4.2 java小应用程序(applet)

  在上一小节中,我们已经成功地编辑、编译、运行了两个java应用程序:helloworld和welcome,现在我们一起来编辑、编译、运行一个java小应用程序。

  1.首先,编辑java语言小应用程序(java applet)源程序:

  与编辑java应用程序相同,我们使用以下命令调用“写字板”程序来编辑小应用程序的源程序。


c:javastudy> notepad helloworldapplet.java



  注意:

  编写小应用程序时,还是要注意文件名的大小写。

  在写字板中,输入下面的程序代码,然后存盘退出。

  源程序:helloworldapplet.java


import java.applet.applet;
import java.awt.graphics;
public class helloworldapplet extends applet
{
public void paint(graphics g)
{
g.drawstring(“hello world!”,0,50);
}
}



  2.接着我们回到刚才打开的那个ms-dos窗口。编译刚才我们编写的那个小应用程序,输入命令:


c:javastudy> javac helloworldapplet.java



  如果一切正常的话,20秒钟左右,将回到命令提示符“c:javastudy”,没有任何错误提示就表明编译成功了。编译成功后,将生成一个名为helloworldapplet.class的文件。

  3. 编辑包容java小应用程序的html文件,输入命令:


c:javastudy>notepad helloworldapplet.html



  一些提示:

  使用java编程,java源程序文件的名字应与类名一致,但包含小应用程序的html文件则无需与其一致。笔者在此取了一样的名字是为了更易于阅读。

  然后在写字板中输入以下内容,存盘退出。


<html>
<head>
<title>this is test of java applet </title>
</head>
<body>
<applet code=”helloworldapplet.class” width=200 height=200>
</applet>
</html>



  一些说明:

  由于java小应用程序是不能直接使用命令行来运行的,它们是嵌入到网页中的,要使用浏览器才能够运行。而浏览器是无法直接执行java小应用程序的。这时我们就必须通过html文件来告诉浏览器执行java小应用程序。

  在html文件中嵌入java小应用程序,应使用<applet></applet>标志,这个标志包含几个参数:

  code=“”:用来指出要嵌入的java小应用程序名称;

  width=x:用来指定java小应用程序的宽度;

  height=x:用来指定java小应用程序的高度。

  4. 运行java小应用程序helloworldapplet。

  我们可以通过两种方法来运行java小应用程序:一种方法是使用支持java的浏览器(如微软的ie、还用netscape的navigator),另一种方法是使用java的小应用程序浏览器appletviewer。下面我们就分别介绍一下。

  1) 使用支持java的浏览器,在此以ie为例:

  打开ie浏览器,在地址栏上输入“c:javastudyhelloworldapplet.html”,将看到这个小应用程序的输出结果,如下图所示:


  图4-4 使用ie运行这个applet

  2) 如果使用jdk中的小应用程序浏览器appletviewer的话,请输入以下命令:


c:javastudy> appletviewer helloworldapplet.html



  这时,你将看到如下图所示的输出:


  图4-5 使用appletviewer查看applet

  好了,我们又成功地完成了一次java小应用程序实践,做了一次编辑、编译、运行的练习。下面我们一起来回顾一下:

  让我们一起来看一下刚才的那个java小应用程序的源代码,了解一下它的结构,以帮助我们更深刻地了解它。

  同样,我们再使用刚才那个方法:逐层解析法,一步步地分析这个程序。

  接着,我们使用逐层解析法来仔细地阅读一下这个程序:

  1) 首先我们发现这个程序与上一小节的应用程序相比,最前面多了一段,我们先来看看:


import java.applet.applet;
import java.awt.graphics;



  这两句都是以“;”结束的,说明都是一个完整的java语句。那么它到底起到什么作用呢?我们来从字面上理解一下:

  import:输入、进口

  也就是说,把java.applet.applet和java.awt.graphics输入/进口到程序中来。熟悉c/c++语言的读者,看到这里有什么联想没有!

  你想起c/c++中的include语句没有,c/c++语言中是通过include语句系统提供的头文件、或自己编写的头文件包含到程序中来。

  java语言中的import语句就是c/c++语言的include语句,它用来将java语言提供的类输入到程序中来,这样就可以直接使用输入的类,大大节省了程序设计的时间。

  从字面上理解,我们可以知道:

  java.applet.applet:就是关于小应用程序applet的类;

  java.awt.graphics:则应该是与graphics(图形)有关的类!

  注意:

  讲解到这里,似乎会给大家一个误解,认为只有在java小应用程序中会使用import语句,而在java应用程序中不要使用import语句。千万不要有这个误解,否则我就是“误人子弟”的千古罪人了。

  在java应用程序中也一样可以使用import语句来扩展程序,而前面的两个例子,是十分简单的应用程序,所以没有用到import语句。而java小应用程序是一定要使用这个语句的,应为至少需要包括与applet有关的类。

  2) 接着,我们看import语句下面:它是整个程序的最外层:


public class helloworldapplet extends applet
{
………
}



  很明显,public class helloworldapplet extends applet包括了所有的程序段,也就是说这个程序就是public class helloworldapplet extends applet,我们从字面上来理解一下:

  public:公众、公用的;

  class:类;

  extends:扩展、延伸

  也就是说,这是一个类,一个公用的类,它的名字叫做“helloworldapplet”,这整个程序就是helloworldapplet类。在这个类的名字后面加上了extends applet,说明这个类是从applet扩展、延伸出来的,也就是说applet是“helloworldapplet”的父类(超类),而“helloworldapplet”则是applet的子类。

  一些提示:

  其实这里指出的applet类是所有java小应用程序的超类。

  3) 然后我们来看一下这个类里的内容:


public void paint(graphics g)
{
……
}



  我们发现在这个类中有一个方法:paint,大家一定会感觉到奇怪,为什么没有main()方法,而却只有一个paint方法呢!

  这是因为,小应用程序不是自己启动的,而是被已经运行的程序(浏览器)加载的。浏览器预定义了每个小应用程序要做的东西。它是通过调用小应用程序具有的方法来实现加载的。这个方法就是paint。

  说得更通俗、明白一些,就是说java应用程序是自己启动的,从main()方法开始,而小应用程序则是由浏览器调用的,浏览器在不同的时候就调用小应用程序中的方法,比如浏览器要显示小应用程序就调用小应用程序的paint方法。

  4) 最后,就是paint方法所做的事:


g.drawstring(“hello world!”,0,50);



  这一行程序就是当paint方法被调用时所执行的语句,我们一起从字面上理解一下:

  draw:画、写

  string:字符串

  而g是被定义为graphics。

  大概的意思就是使用graphics向屏幕书写字符串。那么写什么呢?写”hello world!”,位置呢!对位置(0,50)。

  好了,对这个程序的探究就到此为止了。更有更细致的东西,我们就留到后面的章节中逐一地说明吧。下面我们一起来做一些巩固性的练习吧!

  自测练习

  与上一小节一样,我们还是通过实际的练习来巩固一下。

  将下面的java小应用程序welcomeapplet.java输入电脑;接着编译、运行一下,然后回答下面所列出来的问题。

  1)首先请您写出您是如何完成这个任务的:

  _________________________________________________________________

  _________________________________________________________________

  _________________________________________________________________

  2)请说说,程序运行的结果是什么?

  源程序:welcome.java


import java.applet.applet;
import java.awt.*;
public class welcomeapplet extends applet
{
label textlabel;
public void init()
{
textlabel=new label (“welcome to world of java!”);
textlabel.setalignment(label.center);
this.add(textlabel);
}
}



  练习答案

  1) 首先,启动写字板,编辑welcomeapplet.java:

  接着,执行以下命令编译它:


c:javastudy> javac welcomeapplet.java



  然后编写一个welcomeapplet.html文件,其内容如下:


<html>
<body>
<applet code=”welcomeapplet.class” width=500 height=200>
</applet>
</html>



  最后,执行以下命令,启动小应用程序浏览器观察这个小应用程序:


c:javastudy> appletviewer welcomeapplet.html



  或者打开ie浏览器,在地址栏上输入“c:javastudywelcomeapplet.html”,将看到这个小应用程序的输出结果。

  2)如果使用小应用程序浏览器将看到以下输出:


  图4-6 使用小应用程序浏览器观看运行结果

  如果使用ie,将看到以下输出:


  图4-7 使用ie观看运行结果

扫描关注微信公众号