安利多种植物蛋白粉:从零开始Java学习笔记

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 13:50:14

从零开始Java学习笔记

字体: 小 中 大 | 打印

25号从交大图书馆借了本《跨平台程序设计语言-Java  Cross-Platform Programming Language Java》(上海市教育委员会 组编,赵毅主编,西安电子科技大学出版社),开始了我的Java学习之旅。
在这里写下我学习过程中的点滴困难与解决的过程,以期对有同样问题的朋友有所帮助。
本来打算从25号起就开始写,但是25号刚装好论坛,26号就台湾地震了,中美海底光缆中断,我的这个服务器在美国,访问不了,直到今天才恢复,虽然还有点慢,但是总算能上来了 赶紧补上前两天的

学习一门从来都没接触过的语言最大的困难就在于不知从何下手,往往一开始就出现问题却不知道问题在哪里。
我先认真的看书,看完一章之后就按照书上的例子把代码全部用记事本手工输入。初学的往往认为树上的例子简单,看懂了就过去了而不动手自己把代码写出来运行一下,等到后面复杂的时候就根本应付不过来了。这个时候也最好避孕药用有代码提示和自动纠错的开发工具,我装了Eclipse,很好用,但是这里我想练手还是手写最好。我也是看了网上好多网友的文章、忠告之后,加上以前我学习php的经验教训,这次就有意识的这么做了。
我手工输入了HelloWorld(SUN官方网站上就以此为例的)最简单演示程序的源代码
public class HelloWorld {

        public static void main(String[] args) {
                System.out.println("Hello World!");
        }

}
保存为HelloWorld.java之后,在DOS提示符下输入javac HelloWorld.java 回车,停顿了一下,没有提示信息,说明没有问题了,记得有人说过在Dos下没有消息就是好消息(一般发生错误才有提示消息),检查了一下HelloWorld.java所在的目录下多了个HelloWorld.class文件,说明编译成功,然后输入java HelloWorld 回车,出现了如下错误信息:
Exception in thread "main" java.lang.NoClassDefFoundError:
我仔细检查并重复试了几次也没发现代码有问题,就搜索了一下“Exception in thread "main" java.lang.NoClassDefFoundError:”,发现这是java初学者的经典错误,我也不例外 找到了解决方法:

QUOTE:

1、你的文件名对吗?
JAVA要求你的文件和你的类名严格对应的。
比如 public class HelloWorld{ .....
那么文件名一定只能是HelloWorld.java,看仔细了!

2、你的程序中有main方法吗?参数什么的对吗?
main方法的声明应该是这样子的:
public static void main(String[] args)
事实上如果你用开发工具来做的话,是不会错的。如果你用UltraEdit之类的来写程序的话,就一个字不要改的照抄吧!同时要注意大小写不要出错!

3、记住,javac后面跟的参数是文件名,但java 后面跟的是类名!
这是我开始学JAVA是犯的错,java HelloWorld.class,然后就报错。后来才弄明白,应该是java HelloWorld。

4、设置了classpath等系统环境变量了吗?

QUOTE:

JDK/java环境变量的设置

1,在Windows XP系统中,假如我安装JDk到目录:C:\Program Files\Java\j2re1.4.2_13

2,在桌面上选中“我的电脑”,在其上单击鼠标右键,选属性,高级,环境变量(在下面)

3,在系统变量(S)栏点新建,出现新建系统变量对话框,在变量名(N)中填上JAVA_HOME

变量值:C:\Program Files\Java\j2re1.4.2_13

4,确定后在系统变量(S)栏再新建一个环境变量CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(开头的dot和;不能少

5,确定后在系统变量(S)栏查找并选中变量为Path的选项,点编辑在变量值(V)的末尾添加:

JAVA_HOME%\bin    或者为值:C:\Program Files\Java\j2re1.4.2_13

如果没有找到Path变量,自己新建一个!

如果你不想每次运行都要CMD到class所在目录然后执行java命令,可以把所有的class文件放到统一的目录组织下,然后将此目录也追加到classpath下。

测试代码如下:

public class Test
{
public static void main(String[] args)
{
  System.out.println("Hello World!");
}
}

用记事本编辑后存为Test.java(文件名与类名相同)文件,打开命令行窗口,

cd到文件所在目录下:

javac Test.java                   //编译命令

java Test                            //执行程序

如果输出为:Hello World!   OK,配置完毕,否则,重新检查。
总结如下:

安装路径:C:\Program Files\Java\j2re1.4.2_13

变量名:java_home
变量值:C:\Program Files\Java\j2re1.4.2_13

变量名:classpath
变量值:
.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;

变量名:path
变量值:%java_home%\bin
我按照上面的设置了还是不行,后来到安装目录下去看时发现不知怎么回事lib目录下的dt.jar和tools.jar文件都不见了
这种问题可能遇到的人比较少吧,不过到现在我还不明白那两个文件怎么没有了,我没有手动删过。
最后总算成功了。

我也来说两句 查看全部评论 相关评论

  • phyan (2006-12-31 01:09:08)

    我觉得对环境变量的配置还是要仔细的学深入一点,又找了一些很好的资料贴下来:

    QUOTE:

    背景知识:环境变量介绍

    环境变量是操作系统、应用程序、脚本程序等等的指明灯,能够告诉他们需要的资源在哪里。大多数的系统都有一些预先设置好的环境变量,当然,我们也可以增加自己的环境变量。为了看看当前系统的环境变量,我们可以用如下的命令:
    在Linux/Unix系统上,在shell命令符输入 env ,然后回车
    在Windows系统中,在DOS窗口提示符输入 set ,然后回车
    这样,我们就可以看到系统当中的所有环境变量,如果我们想看看单个变量的值呢?
    在Linux/Unix系统上,在shell命令符输入 echo $变量名 ,然后回车
    在Windows系统中,在DOS窗口提示符输入 set 变量 或者 echo %变量%,然后回车
    如果要设置一个环境变量,可以用下面的命令:
    在Linux/Unix系统上,在shell命令符输入 export 变量名="变量值" ,然后回车
    在Windows系统中,在DOS窗口提示符输入 set 变量名="变量值" ,然后回车
    这样,就设置好了。path和classpath环境变量的值都是一些有顺序的目录列表。告诉系统或者应用程序到哪里去寻找它们需要的资源。这个目录列表是由一系列的分隔符分开的,Linux/Unix系统下分隔符是冒号“:”,windows系统中是分号“;”。如果,我们想在某个已经存在的环境变量值下加一些自己的值的话,可以这样:
        Linux/Unix系统下: export CLASSPATH=$CLASSPATH:/path/to/program
        Windows系统下: set CLASSPATH = %CLASSPATH%;c:\path\to\program
    ===================================================
    要想方便的开发和运行Java应用程序,我们需要设置两个环境变量,一个path一个classpath。
    设置好path变量,使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等;这就要找到我们安装JDK的目录,比如我们的JDK安装在c:\JDK_1.4.2\目录下,那么在c:\JDK_1.4.2\bin目录下就是我们常用的java应用程序,我们就需要把c:\JDK_1.4.2\bin这个目录加到path环境变量里面。
    classpath环境变量,是当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们提供了一些额外的丰富的类包,一个是dt.jar,一个是tools.jar,这两个jar包都位于c:\JDK_1.4.2\lib目录下,所以通常我们都会把这两个jar包加到我们的classpath环境变量中set classpath=.;c:\JDK_1.4.2\lib\tools.jar;c:\JDK_1.4.2\lib\dt.jar。 注意对于jar包,在classpath中
    需要跟上完整地文件路径,而不能仅仅跟一个目录。第一个路径的点“.”,代表当前目录,这样当我们运行java AClass
    的时候,系统就会先在当前目录寻找AClass文件了。

    QUOTE:

    Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。
    JAVA_HOME指向的是JDK的安装路径,如x:\JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX\xxx……
    那么,下面的步骤和以后的应用你都要受累了,呵呵。设置方法:
    JAVA_HOME=x:\JDK_1.4.2  (注:这里是JDK文件夹的绝对路径)
    PATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上%JAVA_HOME%\bin(注,如果你对DOS批处理不了解,你可能不明白%%引起来的内容是什么意思;其实这里是引用上一步设定好的环境变量JAVA_HOME,你写成x:\JDK_1.4.2也是可以的;你可以打开一个控制台窗口,输入echo %JAVA_HOME%来看一下你的设置结果) :
    PATH=%JAVA_HOME%\bin;%PATH%
    注:是增加,绝对不可删除原有的数据,并用";"隔开你所加的路径.
    同样,%PATH%是引用以前你设置的PATH环境变量,你照抄以前的值就行了。
    CLASSPATH环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问题80%以上都可能是由于CLASSPATH设置不对引起的,所以要加倍小心才行。
    CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar
    首先要注意的是最前面的".\;",如果你看不清,我给你念念——句点反斜杠分号。“. ”代表 命令提示符的当前目录(它表示在当前目录里寻找class。如果没有这个点,那么CLASSPATH就不知道去那里寻找HelloWorld.class;把JDK中的lib子目录,以及其下的tools.jar设置到CLASSPATH中,才可以在运行java程序时加载),这个是告诉JDK,搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,所以如果喜欢盘根究底的朋友不妨研究一下LINUX。
    为什么CLASSPATH后面指定了tools.jar这个具体文件?不指定行不行?显然不行,行的话我还能这么罗索嘛! 这个是由java语言的import机制和jar机制决定的,你可以查资料解决。

    呵呵,具体的设定方法: win2k\xp用户右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。
    win9x用户修改autoexec.bat文件,在其末尾加入:
    set JAVA_HOME=x:\JDK_1.4.2
    set PATH=%JAVA_HOME%\bin;%PATH%
    set CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar

    就可以了。
    真正理解上面说的环境变量设置的意义后,就可以任意设置啦:
    如果你的jdk目录为f:\jdk,那么就新建一个变量JAVA_HOME,值为f:\jdk,classpath前面添加.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    如果你想用自己的java包,而那些包放在d:\mypackage文件夹中,那么你可以在classpath后添加;d:\mypackage

    QUOTE:

    …………
    问题终于解决了,原因其实很简单:最近我也在学习XML,在学习XML的过程中曾经安装了一个用于查看XMl的软件,而这个软件在安装的过程中,自己在我的用户变量里设置了一个CLASSPATH变量!就是因为这个小东西害我花了这么长时间:(杀掉!(呵呵,杀掉它还有点不忍心,因为它是我学习XML的好工具!) 其实这可能是我的一个误区,以前设置CLASSPATH变量时只知道在系统变量中设置,不知道在用户变量里设置的CLASSPATH变量也可以!于是将自己在系统变量中设置的CLASSPATH变量删掉,全部设到用户变量的CLASSPATH变量里!打开DOS测试一切通过!

    问题总结:或许这是我我们在学习JAVA过程中常常碰到问题,但在这里我要提醒大家的是,以后在设置CLASSPATH变量时,千万要注意你以前安装的软件是不是自动更改了你的系统变量,如果是那么你在设置的时候就要注意拉,不要再犯我所犯的同样错误(关键是浪费时间)!

    QUOTE:

    Java方面的软件大部分是开放源码的,而且多数是绿色软件,只要解压,设置一下环境变量即可使用。由于软件本身升级比较频繁,经常需要重新设置使用的环境变量,而且可以同时安装同一软件的不同版本(甚至是相同版本)。如eclipse可分别在F, G,H三个盘上装不同的版本,一个是中文版,一个是英文的Latest Release,一个是Stream Stable,反正是绿色安装,也不会发生冲突,这样通过对比便于了解和测试最新版本的先进之处。
    但是假如把JDK版本从1.3升级到1.4,即JDK目录名可能要从“j2sdk1.3”改为“j2sdk1.4”,如果是这样的话,那么eclipse 可能会无法再启动了(它要从环境变量中寻找JAVA_HOME变量,而JAVA_HOME变量值已经从“j2sdk1.3”改为“j2sdk1.4” 了)。
    再谈谈jakarta-tomcat,这个软件升级比较频繁,如果你是结合eclipse来使用Tomcat的,那么每次Tomcat升级,可能都要在eclipse中重新设置一下Tomcat的安装目录,是不是有些麻烦?
    对于此类问题,解决的方法很简单,只要把默认的软件安装目录名去掉版本号即可(如果担心忘记版本号,只要在目录中添加一个readme文件加以说明即可)。同样,在环境变量设置中也不出现版本号,这样,如果再需要升级软件时,仅仅把新版软件安装在旧版软件目录即可。其它一般都不需要再改动了。
    另外,在环境变量设置中,可以用%变量%代替变量值,如Path变量值可以这样设置:  %JAVA_HOME%\bin;%ANT_HOME%\bin;
    另外注意一点,上边“**的用户变量”是当前用户的环境变量,只有当前用户可用。下边“系统变量”所有用户都可以用。
    建议从http://java.sun.com下载其Java Documentation,这是Java帮助文档。
    以上资料大多是从http://blog.csdn.net 的博客里找到并作了合理的编辑,感谢这些朋友们。
  • phyan (2006-12-31 02:57:24)

    在编写源代码时,很多地方不能随意书写,对初学者而言,以下地方要特别注意:
    1.中文和英文。
    在源代码中,很少使用中文,可以使用的只有两个地方:一是在输出语句的引号中,二是在注释中。
    2.大小写敏感。
    Java源程序对大小写是非常敏感的,改变大小写将直接引起错误。
    3.括号。
    在Java源代码中有三种括号,即小括号()、中括号[]和大括号{},三种括号适用于不同情况不能随便替换,也不能与中文的符号相混淆。
    4.class文件名和相应类的名必须一致。如上面的HelloWorld必须使用HelloWorld.java作为文件名,而且大小写要一致。不然运行java Helloworld会出现如下错误的:

    QUOTE:

    Exception in thread "main" java.lang.NoClassDefFoundError: Helloworld (wrong nam
    e: HelloWorld)
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    另外看到网上两个比较好的问答:

    QUOTE:

    Q: Applet 怎样运行?
    A: 主要有两种方法
        1, JDK中的applet浏览器。
        2, IE浏览器
        这两种方法都要将Applet嵌入到 HTML 文件中,如
       
       

        保存在和源文件同目录下,文件名为xxx.html,如果用JDK中
        的applet浏览器看,就在命令提示符下运行
        appletviewer xxx.heml
        用IE看直接双击 html 文件即可

    Q: 为什么用IE运行Applet时,显示的就是一片空白
    A: IE本身并不支持Applet 的运行,要去 www.java.sun.com 下载一个插件(java plug_in)
    接下来开始数据类型学习了

    这个Light.java源程序是用来练习长整型(long)的整数类型的,如果把其中的一些变量由long类型改为整型(int),最后的运算结果要出错的,所以一定要定义合适的数据类型。
    //Computer distance light travels using long variables.
    class Light{
            public static void main(String args[]){
                    int lightspeed;
                    long days;
                    long seconds;
                    long distance;

                    //approximate speed of light in miles per second
                    lightspeed = 186000;
                    days = 1000; //specify number of days here
                    seconds = days*24*60*60; //convert to seconds
                    distance = lightspeed*seconds; //compute distance
                    System.out.print("In "+days);
                    System.out.print(" days light will travel about ");
                    System.out.print(distance+" miles.");
            }
    }
    编译后运行结果如下
    In 1000 days light will travel about 16070400000000 miles.
  • phyan (2007-1-01 22:22:43)

    下面的程序是用双精度浮点型变量计算一个圆的面积:
    //Computer the area of a circle.
    class Area{
            public static void main(String args[]){
                    double pi,r,a;
                    r=10.8; //radius of circle
                    pi=3.1416;//pi, approxiately
                    a=pi*r*r;//compute area
                    System.out.println("Area of circle is "+a);
            }
    }
    执行结果是:Area of circle is 366.436224
    这里做了两点测试:
    1.public static void main(String args[]){语句中main和括号之间有无空格都没问题,和行末的大括号之间有无空格也无所谓,接下来的语句中等号、乘号及句末分号前后空格有无也不影响程序执行。总结如下,java对程序代码中的空格不敏感。
    2.类的名称把首字母大写改为小写也可以;编译产生的扩展名为class的文件名和程序中的类名是严格一致的。无论文件名是Area.java或area.java,javac area.java和javac Area.java均可以正确编译,但是java Area.java和java area.java是不一样的,这个一定要严格和xxxx.class一致,否则要出错。如果不一致会产生如下错误信息:
    Exception in thread "main" java.lang.NoClassDefFoundError: area (wrong name: Area)
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  • phyan (2007-4-11 09:30:48)

    JDK 6 Documentation 下载地址: http://java.sun.com/javase/6/docs/
    JDK 下载地址: http://java.sun.com/javase/downloads/index.jsp

    IBM的JAVA资料: http://www.ibm.com/developerworks/cn/java/

    IBM的Open source 新手入门:  http://www.ibm.com/developerworks/cn/opensource/newto/