一个月时间不算短,能做到循序渐进了。先找一本最基础的入门书(如果你对java一点儿都不了解的话),应该在一周以内搞定。然后找一或两本提高的书来看。编译器就用jdk1.4好了。一个月下来,应该有小成了吧。

解决方案 »

  1.   

    一个月能熟悉java的语法就不错了,再加点OOP,就可以出去唬人了
      

  2.   

    呵呵呵,多看些理论方面的书,如j2ee架构什么的,再学会一两种设计模式,然后出去就可以NB了,呵呵呵,能吹多大就吹多大,
      

  3.   

    面向对象的思想;找点例子做做;熟悉基本概念(多线程、jdbc、rmi);一些类库,用的时候再说
      

  4.   

    哪位给推荐两本书撒,我java没底子,都说这大虾多,特来讨教,谢谢先!!!
      

  5.   

    先花兩天時間看看C++(如果你沒學過的話),然後一個星期學些基本語法,多編些小代碼~~~然後就翻翻API,寫些小程序熟悉常用類的用法~~~
    我是這樣學的~~~
      

  6.   

    我也刚开始接触java ,这几天看了一些jsp方面的东西
    用jdk1.4+tomcat,感觉还是有点收获的。
    下一步准备接触一点j2ee,我想一个月熟悉基本开发方法还是可以的吧
      

  7.   

    我用两天就学会了语法.不过我以前学过C.
    今天我学会了OOP,不过我以前学过vb的类.虽然没有java这么多的继承性和多态性.不过我大体懂了.
    明天我要学介面设计了.GUI.哈哈
    我想在一个星期后开发程序.只要努力我相信我能行的.
    你也是可以的
      

  8.   

    本人第一个晚上就看完了语法,第二天翻完java内幕技术,第三天编gui,编了一个游戏程序。非常爽!
      

  9.   

    一个星期熟悉语法和OOP,
    一个星期做点界面,
    一个星期做点JDBC,
    一个星期做点JAVABEAN
      

  10.   

    看来这里的牛人比较多啊。大都一个星期就可以出山了。厉害,佩服。
    如果你要学的话,先集中在java本身上,熟悉语法了解运行的机制,会使用几个比较常用的包就可以了。这些在一个月内应该可以办到的。
    我写java也有一年多了,java这个东西入门很容易,看上去有点象个玩具语言。可是一旦把他放到一个大环境里就比较麻烦了。尤其是现在sunone改进后的j2ee结构。东西比较多涉及的面比较广,我感觉到扎实的java基础很重要。
      

  11.   

    每年8月来清华听计算机系的java课,正好一个月!
    ^_^
      

  12.   

    我给你推荐两本书肯定要得,
    java核心技术卷1第5版,你可以跳起看,讲图形的可以先不看,就看看基础。还有就是国外出的25天精通java,不是国内的那本哈,你国人注意看看作者。
      

  13.   

    请问我的tomcat第一次安装好后运行正常,但我一旦重新启动计算机再启动tomcat就会报错,请问这是为什么?
      

  14.   

    “作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。
    (1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。写作本书的时候,刚刚出现了一些准实时编译器,它们能显著加快速度。当然,我们完全有理由认为会出现适用于更多流行平台的纯固有编译器,但假若没有那些编译器,由于速度的限制,必须有些问题是Java不能解决的。
    (2) 和C++一样,Java也提供了两种类型的注释。
    (3) 所有东西都必须置入一个类。不存在全局函数或者全局数据。如果想获得与全局函数等价的功能,可考虑将static方法和static数据置入一个类里。注意没有象结构、枚举或者联合这一类的东西,一切只有“类”(Class)!
    (4) 所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何(嵌入的问题在后面讲述)。
    (5) 在Java中,类定义采取几乎和C++一样的形式。但没有标志结束的分号。没有class foo这种形式的类声明,只有类定义。class aType()
    void aMethod() {/* 方法主体 */}
    }
      

  15.   

    (6) Java中没有作用域范围运算符“::”。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。我们注意到的一项差异是对static方法的调用:使用ClassName.methodName()。除此以外,package(包)的名字是用点号建立的,并能用import关键字实现C++的“#include”的一部分功能。例如下面这个语句:
    import java.awt.*;
    (#include并不直接映射成import,但在使用时有类似的感觉。)
    (7) 与C++类似,Java含有一系列“主类型”(Primitive type),以实现更有效率的访问。在Java中,这些类型包括boolean,char,byte,short,int,long,float以及double。所有主类型的大小都是固有的,且与具体的机器无关(考虑到移植的问题)。这肯定会对性能造成一定的影响,具体取决于不同的机器。对类型的检查和要求在Java里变得更苛刻。例如:
    ■条件表达式只能是boolean(布尔)类型,不可使用整数。
    ■必须使用象X+Y这样的一个表达式的结果;不能仅仅用“X+Y”来实现“副作用”。
    (8) char(字符)类型使用国际通用的16位Unicode字符集,所以能自动表达大多数国家的字符。
    (9) 静态引用的字串会自动转换成String对象。和C及C++不同,没有独立的静态字符数组字串可供使用。
    (10) Java增添了三个右移位运算符“>>>”,具有与“逻辑”右移位运算符类似的功用,可在最末尾插入零值。“>>”则会在移位的同时插入符号位(即“算术”移位)。
    (11) 尽管表面上类似,但与C++相比,Java数组采用的是一个颇为不同的结构,并具有独特的行为。有一个只读的length成员,通过它可知道数组有多大。而且一旦超过数组边界,运行期检查会自动丢弃一个异常。所有数组都是在内存“堆”里创建的,我们可将一个数组分配给另一个(只是简单地复制数组句柄)。数组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。
    (12) 对于所有不属于主类型的对象,都只能通过new命令创建。和C++不同,Java没有相应的命令可以“在堆栈上”创建不属于主类型的对象。所有主类型都只能在堆栈上创建,同时不使用new命令。所有主要的类都有自己的“封装(器)”类,所以能够通过new创建等价的、以内存“堆”为基础的对象(主类型数组是一个例外:它们可象C++那样通过集合初始化进行分配,或者使用new)。
    (13) Java中不必进行提前声明。若想在定义前使用一个类或方法,只需直接使用它即可——编译器会保证使用恰当的定义。所以和在C++中不同,我们不会碰到任何涉及提前引用的问题。
    (14) Java没有预处理机。若想使用另一个库里的类,只需使用import命令,并指定库名即可。不存在类似于预处理机的宏。
    (15) Java用包代替了命名空间。由于将所有东西都置入一个类,而且由于采用了一种名为“封装”的机制,它能针对类名进行类似于命名空间分解的操作,所以命名的问题不再进入我们的考虑之列。数据包也会在单独一个库名下收集库的组件。我们只需简单地“import”(导入)一个包,剩下的工作会由编译器自动完成。
      

  16.   

    (16) 被定义成类成员的对象句柄会自动初始化成null。对基本类数据成员的初始化在Java里得到了可靠的保障。若不明确地进行初始化,它们就会得到一个默认值(零或等价的值)。可对它们进行明确的初始化(显式初始化):要么在类内定义它们,要么在构建器中定义。采用的语法比C++的语法更容易理解,而且对于static和非static成员来说都是固定不变的。我们不必从外部定义static成员的存储方式,这和C++是不同的。
    (17) 在Java里,没有象C和C++那样的指针。用new创建一个对象的时候,会获得一个引用(本书一直将其称作“句柄”)。例如:
    String s = new String("howdy");
    然而,C++引用在创建时必须进行初始化,而且不可重定义到一个不同的位置。但Java引用并不一定局限于创建时的位置。它们可根据情况任意定义,这便消除了对指针的部分需求。在C和C++里大量采用指针的另一个原因是为了能指向任意一个内存位置(这同时会使它们变得不安全,也是Java不提供这一支持的原因)。指针通常被看作在基本变量数组中四处移动的一种有效手段。Java允许我们以更安全的形式达到相同的目标。解决指针问题的终极方法是“固有方法”(已在附录A讨论)。将指针传递给方法时,通常不会带来太大的问题,因为此时没有全局函数,只有类。而且我们可传递对对象的引用。Java语言最开始声称自己“完全不采用指针!”但随着许多程序员都质问没有指针如何工作?于是后来又声明“采用受到限制的指针”。大家可自行判断它是否“真”的是一个指针。但不管在何种情况下,都不存在指针“算术”。
    (18) Java提供了与C++类似的“构建器”(Constructor)。如果不自己定义一个,就会获得一个默认构建器。而如果定义了一个非默认的构建器,就不会为我们自动定义默认构建器。这和C++是一样的。注意没有复制构建器,因为所有自变量都是按引用传递的。
    (19) Java中没有“破坏器”(Destructor)。变量不存在“作用域”的问题。一个对象的“存在时间”是由对象的存在时间决定的,并非由垃圾收集器决定。有个finalize()方法是每一个类的成员,它在某种程度上类似于C++的“破坏器”。但finalize()是由垃圾收集器调用的,而且只负责释放“资源”(如打开的文件、套接字、端口、URL等等)。如需在一个特定的地点做某样事情,必须创建一个特殊的方法,并调用它,不能依赖finalize()。而在另一方面,C++中的所有对象都会(或者说“应该”)破坏,但并非Java中的所有对象都会被当作“垃圾”收集掉。由于Java不支持破坏器的概念,所以在必要的时候,必须谨慎地创建一个清除方法。而且针对类内的基础类以及成员对象,需要明确调用所有清除方法。
    (20) Java具有方法“过载”机制,它的工作原理与C++函数的过载几乎是完全相同的。
    (21) Java不支持默认自变量。
    (22) Java中没有goto。它采取的无条件跳转机制是“break 标签”或者“continue 标准”,用于跳出当前的多重嵌套循环。
    (23) Java采用了一种单根式的分级结构,因此所有对象都是从根类Object统一继承的。而在C++中,我们可在任何地方启动一个新的继承树,所以最后往往看到包含了大量树的“一片森林”。在Java中,我们无论如何都只有一个分级结构。尽管这表面上看似乎造成了限制,但由于我们知道每个对象肯定至少有一个Object接口,所以往往能获得更强大的能力。C++目前似乎是唯一没有强制单根结构的唯一一种OO语言。
    (24) Java没有模板或者参数化类型的其他形式。它提供了一系列集合:Vector(向量),Stack(堆栈)以及Hashtable(散列表),用于容纳Object引用。利用这些集合,我们的一系列要求可得到满足。但这些集合并非是为实现象C++“标准模板库”(STL)那样的快速调用而设计的。Java 1.2中的新集合显得更加完整,但仍不具备正宗模板那样的高效率使用手段。
    (25) “垃圾收集”意味着在Java中出现内存漏洞的情况会少得多,但也并非完全不可能(若调用一个用于分配存储空间的固有方法,垃圾收集器就不能对其进行跟踪监视)。然而,内存漏洞和资源漏洞多是由于编写不当的finalize()造成的,或是由于在已分配的一个块尾释放一种资源造成的(“破坏器”在此时显得特别方便)。垃圾收集器是在C++基础上的一种极大进步,使许多编程问题消弥于无形之中。但对少数几个垃圾收集器力有不逮的问题,它却是不大适合的。但垃圾收集器的大量优点也使这一处缺点显得微不足道。