southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
阅读:4016回复:10

java helloworld

楼主#
更多 发布于:2004-08-04 17:19
现在学习java的同学越来越多了,其实这是小圈子现象,在大环境下就说中国就火了N久了,就更别说国外了(主要指美国),一般我们都落后人家好今年。
学校也开了课,我们上的时候是选修,老师对我漠不关心(不知道对其他人怎么样),自己也不怎么上进,没怎么学,到毕业设计的时候才开始学习java,所以学习的时间不是很长。
我在这里也谈不上交流,因为我说的都是非常基础的东西,况且很多都是我自己的理解,绝对绝有不对的地方,希望大家指出来,帮我的忙。
当你真正进入java领域的时候,你才能真正感受她的强大(书上怎么吹我们还是糊里糊涂的)。有人说系统支持选择C++,企业应用选择java,所以在选择一门程序设计语言以前,你要知道自己要做什么。得承认java在做图形用户界面方面可以说很烂(即使在java2中增加了swing类包也是这样,这也是我做毕业设计的体会)。
我上面所说的和下面要说的都是我从其他地方“拿”来的,没有一点自己的东西,如果有错误的地方不是我的记忆有问题就是我的理解有问题,希望大家用批判的眼光对待。 -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2004-08-04 17:40
Re:java helloworld
一开始我们不准备介绍java语言。没一本java书第一页开始就要介绍java的面向对象、安全、多线程等等。然后才是helloworld程序,我觉得如果我们一开始就能写一个helloworld通过相关处理然后运行能在屏幕上打印出 helloworld,这时候我们无疑有一种成就感。所以我准备首先讲 helloworld.

准备工具  jdk(java development kit) 当前版本是1.4...你可以到sun 去随便下。选择win版本的(大多说人都用windows 8)。这个都很简单。
解压缩后安装也很简单。


安装后有一个j2sdk1.4...目录,该目录下面有5个文件夹和其他一些文件。
bin  文件夹包含sun提供的java开发的一些工具,下面我们会详细介绍。
demo  不用说了8。
include  java编程中用到c才有用(待考证)
jre  java run envirement    java运行环境,我们在讲java程序运行机制的时候再说。
lib  jdk提供的类库。以后再说。
同级目录下有个src.zip是上面  lib  中类包的源文件(.java文件)。

安装好了就可以编写我们自己的java程序了。
--------每种程序设计语言都有自己的helloworld
我学习每一种程序设计语言的第一个程序都是helloworld。

用记事本新建一个文本写入下面的代码。

//helloWorld.java

import java.io.*;

//public class helloWorld
class helloWorld
{
   public static void main(String[] args)
   {
           System.out.println("HelloWorld!");
   }
}

另存为  helloWorld.java  到  j2sdk1.4....的  bin  目录下。
启动msdos(开始--运行--cmd--enter)
转到  j2sdk1.4...的bin 目录。
>dir  一下,除了看到一些  *.exe外,我们应该能看到  helloWorld.java(注意,不是helloWorld.java.txt,后缀一定是java)。
>javac  helloWorld.java     //如果程序代码写的没问题,会经过一段时间(根据代码不同能不同)回到 >,就是没有打印输出。
>java  helloWorld      //顺利的话,我们就能看到  helloWorld  了


--------------------
好好吃饭,天天睡觉
努力赚钱,娶个老婆

[ 2004-08-04 17:42:39 southeast 修改 ] [ 2004-08-04 17:44:22 southeast 修改 ]
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
2C#
发布于:2004-08-04 18:06
Re:java helloworld
我们来研究一下这段代码。
1  //helloWorld.java
2  import java.io.*;
3
4  //public class helloWorld
5  class helloWorld
6  {
7      public static void main(String[] args)
8      {
9              System.out.println("HelloWorld!");
10      }
11 }

第一行前面有两个//表示这是个注释,java的注释和其他语言区别很小
第二行有一个  import  ,和 c 里面的  include 功能差不多,先不详细介绍。java.io.* 表示的是引入的类包,这些类包都是在前面那个lib目录下的一个  jar文件里的,自己可以去看看,顺便就清楚了, java-io-*之间的关系了。
第四行和第五行都能用(注册其中一行我们同样能使用)。java里面的static方法、变量在整个程序中只有一份,java应用程序中main方法只有一个(通过前面的static修饰符就能看出来),一个java程序中只有一个类可以是 public(哎呀讲到类了,麻烦了),如果java程序中有一个类定义为public,则该.java文件的名字必须和这个public类的类名一样。从这里也可以看出一个程序中只能有一个public类(如果有a b 两个类都是public 类,那么我们究竟是a.java呢还是b.java呢?)
第五行定义了一个类。关键字class  定义了一个类,类的名字叫 helloWorld  。java号称是面向对象的程序设计语言,这些所有的对象都是类的实例,我们要使用对象,首先就要定义类。java程序都是类的集合。在类里面定义变量方法以及类之间的联系。
第9行打印一个字符串“HelloWorld!”,System是系统类,out是个对象,println是out的方法。
饿了,走人。很幼稚啊,不过希望大家支持我写下去。砖头来了,不得不走了。 -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
tsx
tsx
知名人士
知名人士
  • 铜币0枚
  • 威望0点
  • 贡献值0点
3C#
发布于:2004-08-04 19:24
Re:java helloworld
呵呵!我在同时学两们语言.一门c++一门java.不知可行否?因为我不知道各种语言的优缺点.所以^瞎学! -------------------- 别拿你的脾气,挑战我的个性
别拿你的脾气,挑战我的个性
tsx
tsx
知名人士
知名人士
  • 铜币0枚
  • 威望0点
  • 贡献值0点
4C#
发布于:2004-08-04 22:19
Re:java helloworld
嘿嘿!继续继续.我举双手投票! -------------------- 别拿你的脾气,挑战我的个性
别拿你的脾气,挑战我的个性
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
5C#
发布于:2004-08-05 09:55
Re:java helloworld
本来今天想聊path classpath的,昨天回去看了一下类加载器,发现好多有趣的东西,现在给大家聊聊。
我们知道java程序是运行在虚拟机上的,jAVA虚拟机包含7个部分:method area  stack area  垃圾回收  常量池  类加载器 什么引擎 记不清了,以后有机会聊虚拟机的时候补上,今天主要说类加载器。
其实我们下面介绍的是java程序运行的原理。
我们编写完一个java程序编译通过生成一个.class文件,然后用 java *.class运行这个程序。这里用到了 java.exe这个程序(在bin目录下),java.exe是java程序的解释程序,负责找到jre,然后把我们要运行的类传给虚拟机,接下来就是虚拟机的工作,java.exe就没什么工作了。
当虚拟机要运行一个程序的时候首先要通过类加载器把“原料”加载到内存当中去,首先是把一些基本的类加载进取(叫预置类吧),因为我们运行java程序的时候经常要用到这些类,所以虚拟机事先就把这些类加载到内存中去以提高执行效率。这些加载的类主要是lib目录下 的rt.jar包里的。然后才是加载我们的应用程序使用到的类。
我们可以通过下面的命令查看。
java -verbose:class helloWorld
helloWorld类为上面我们写的程序编译后得到的类。
屏幕经过几秒钟的滚动后会停止,我们可以看到类加载器是怎样 load  类的,在接近结束的地方我们可以看到 load 了 helloWorld
并且接着打印了  HelloWorld 。

我们说类加载器只加载程序运行需要用到的类。如果程序代码如下:
class A
{}
public class B
{}
当我们存为 B.java  然后javac B.java  接着执行  java -verbose:class B的时候我们发现 load 了B没有load A,就是这个意思。

----虚拟机中有多个类加载器,一个加载器可以加载多个类,一个类可以由多个不同的类加载器加载,我们可以自己定义类加载器,用自己定义的类加载器加载我们自己想要加载得类。

第一个使用到的类加载器是 bootstrap classloader,这个加载器是用C写的(以后介绍的地都是java些的),我们想要打印这个类加载器的时候会打印出 null,并不是说不需要类加载器,仅仅因为它是C写的(我就知道这么多)。还有两个类加载器ExtClassLoader  and AppClassLoader  ……再说了,如果有兴趣我再写。 -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
tsx
tsx
知名人士
知名人士
  • 铜币0枚
  • 威望0点
  • 贡献值0点
6C#
发布于:2004-08-06 09:31
Re:java helloworld
嘿嘿!继续继续!当然有兴趣啦!加我qq吧!280960559你有没有用java开发简单应用程序的经验?给个案例让我也练练手脚怎样? -------------------- 别拿你的脾气,挑战我的个性
别拿你的脾气,挑战我的个性
slw4qd
著名写手
著名写手
  • 铜币2枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2004-08-06 13:20
Re:java helloworld
顶java -------------------- [email protected]
,
知名人士
知名人士
  • 铜币1枚
  • 威望0点
  • 贡献值1点
8C#
发布于:2004-08-07 17:10
Re:java helloworld
精彩~~~

不过偶还不知道什么是java虚拟机呢

就是,

虚拟机为啥叫“虚拟机”,

是个啥东东[em086] --------------------
A: B在撒谎
B: A说得对

孤独的人是可耻的

所以,我是可耻的
 
[a=http://my.91qm.com/l/e/leeyupeng/Blog.htm][img]http://my.91qm.com/l/e/leeyupeng/Blog.gif[/img][/a]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
9C#
发布于:2004-08-07 18:09
Re:java helloworld
这两天没时间,也没条件,也没心情。过两天再写吧。
虚拟机的内容特别多,你把虚拟机看成一个cpu就成了,它也就寄存器、程序计数器、堆、栈等的概念。正如前面所说,当执行一个 java.exe程序时,首先找到一个jre,找到jre后才运行jvm.exe(不确定了,应该是),然后jvm.exe调用jvm.dll,这才是真正的虚拟机。
虚拟机启动后首先执行一个APPClassLoader类加载器把当前运行的类(如果你是  java A    **A is a class**  那么就先加载A),然后才根据具体情况加载其它的类(这又涉及到委托代理的问题,问题多阿,哎……)
不说这些了,顺便说一下,今天看j2me了,j2se里可以自己定义类加在器,而j2me里不能自定义类加载器,大家区别对待就是了。
我喜欢砖头,没有砖头我永远的进步不了啊,先谢谢哪里仍砖头的朋友:) -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
ApH
ApH
知名人士
知名人士
  • 铜币0枚
  • 威望0点
  • 贡献值0点
10C#
发布于:2004-08-11 22:47
Re:java helloworld
加油呀!怎么不继续了?
游客

返回顶部