第一篇:JAVA学习报告
java实习报告
摘要:古人有云:“纸上得来终觉浅,绝知此事要躬行”。自从走进了大学,距离工作就不远了,学校为了拓展我们学生自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高我们的能力,以便在以后毕业后能真正走入社会,在学习通信专业知识三年之后,组织我们进行认识与生产实习。认识实习是教学与生产实际相结合的重要实践性教学环节。它不仅让我们学到了很多在课堂上根本就学不到的知识,还使我们开阔了视野,增长了见识。生产实习是对我们进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。,这有利于提高我们业务素质和政治素质。为我们以后更好把所学的知识运用到实际工作中打下坚实的基础。在认识与生产实习过程中,学校也以培养学生观察问题、解决问题和向生产实际学习的能力和方法为目标。
关键字:java、oracle数据库、对象与类、线程、触发器、游标
前言
随着计算机科学的迅速发展,计算机已深入到揉合社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们日常生活提供了很多方便。如今程序设计的语言很多,再好的程序设计业要有一个比较完善、清晰的思路——算法。为了编写一个好程序,必须分析待处理对象的特性以及各个处理对象之间的关系,以便能更好的解决问题。
一、主要实习内容 1.1实习目的
生活在这个信息化的时代,为了能够在编程方面有所突破,能够找到一份好的工作,就应该好好了解一些知识。是由microsystems公司于1995年5月推出的java程序设计语言(以下简称java语言)和java平台的总称。用java实现的hotjava浏览器(支持)显示了java的魅力:跨平台、动态的、internet计算。从此,java被广泛接受并推动了web的迅速发展,常用的浏览器现在均支持java applet。另一方面,java技术也不断更新。java平台由java虚拟机(java virtual machine)和java 应用编程接口(application programming interface、简称api)构成。java 应用编程接口为java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个java平台之后,java应用程序就可运行。现在java平台已经嵌入了几乎所有的操作系统。这样java程序可以只编译一次,就可以在各种系统中运行。java应用编程接口已经从1.1x版发展到1.2版。目前常用的java平台基于java1.4,最近版本为java1.7。oracle 是以高级结构化查询语言(sql)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(client/server)体系结构的数据库之一。1.2实习内容
1.2.1课程体系结构
(1)java se:java核心语法、面向对象程序设计、继承、接口和内部类、异常处理、集合、多线程等
(2)以oracle为平台,介绍oracle数据库的安装,oracle体系结构,物理组件、权限分配,数据管理,深入讲解数据库设计范式。全面讲解各类sql语句的使用,深入学习了oracle数据库对象:tirgger(触发器)、pl/sql语法,作用,使用游标、超出过程、函数等问题。
下面是我学习java的一些内容:
(一)java的关键术语: 1.java语言是简单的 java语言的语法与c语言和c++很相近。另一方面,java丢弃了c++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符的重载、多继承、自动的强制类型的转换。特别是java语言不使用指针。
2.java语言是一个面向对象的
java语言提供类、接口和继承等原语,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。java语言全面支持动态绑定,而c++语言只对虚函数使用动态绑定。总之,java语言是一个纯的面向对象设计语言。3.java语言上分布式的
java语言支持internet应用的开发,在基本的java应用编程接口中有一个网络应用程序接口(java.net),它提供了用于网络应用编程的类库,包括socket、urlcnnection等。4.java语言是健壮的
java的强类型机制、异常处理等是java程序健壮性的重要保证。对指针的丢弃是java的明智选择。java的安全检查机制使得java更具有健壮性。5.java语言是安全的
java通常被用在网络环境中,为此,java提供了一个安全机制以防恶意代码的攻击。除了java语言具有的许多安全特性外,java对通过网络下载的类具有一个安全防范机制。6.java语言是体系结构中立的 java程序(后缀为java的文件)在java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的开发。7.java语言是可移植
这种可移植性来源于体系结构中立的,另外,java还严格规定了各个基本数据类型的长度。
8.java语言是多线程的
在java语言中,线程是一种特殊的对象,它必须由thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,实用型构为thread(runnable)的构造子将一个实现了runnable接口的对象包装成一个线程,其二,从thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
(二)对象与类
类是构造对象的模板或蓝图。
2.1、对成员内部类的使用,如何定义内部类对象: 在外部类里面访问内部类:直接访问
在外部类外面访问成员内部类: 外部类.内部类 对象名=外部类对象.new 内部类构造器();2.2、成员内部类和外部类属性、方法相互访问
外部类访问成员内部类的属性或方法,需要在一个外部类的方法中引用内部类构造对象来使用内部类的属性和方法。
内部类访问外部类的成员属性或方法,则直接使用。2.3内部类是一种特殊的(或者叫复杂的)方法。作用是用来完成外部类给定的复杂算法。
静态内部类:为部类的类属性,或者叫复杂的类方法 2.4、对静态内部类的使用,如何定义静态内部类对象: 在外部类里面访问静态内部类:直接访问--在一个方法中定义静态内部类对象
外部类外面定义静态内部类对象:
外部类.内部类 对象名=new 外部类.内部类构造器();2.5、静态内部类和外部类属性、方法相互访问
外部类访问静态内部类的属性或方法,需要在一个外部类的方法中引用内部类构造对象,然后来使用内部类的属性和方法。
静态内部类只能直接使用外部类的静态属性和方法。
注意:如何在内部类里面访问外部类的this: 外部类名.this.局部类:在方法中定义的类
注意:局部类的角色和方法中的临时变量一样
局部类不能有访问修饰符
局部类的有效范围和临时变量一样,仅仅存在于方法体内。
局部类所处于的方法是否静态,来决定是否能访问外部类的成员属性。局部类所定义的方法可以直接使用局部类定义对象。局部类体里面不能使用方法中的形参,但是可以使用常量形参
2.6局部类的使用,如何定义局部部类对象: 只能在所定义局部类的方法中定义局部类对象。2.7、局部类和外部类属性、方法相互访问
1-局部类可以直接访问外部类的属性以及方法,但是要考虑局部类所处于的方法是否静态,来决定是否能访问外部类的成员属性以及成员方法。
2-外部类可以访问局部类的属性和方法吗? 可以:2.1-局部类继承外部类 2.8-局部类将自己的对象引用传给外部类自己类型的对象
然后使用多态的形式外部类就访问到了局部里的属性以及方法。2.9 匿名内部类
1-要求,匿名内部类必须有指定的继承类2-匿名内部类的定义格式:
父类 对象名=new 父类(){ 匿名类定义过程体 };父接口 对象名=new 父接口(){ 匿名类定义过程体 };3-如何定义匿名类的构造方法?原则上不存在匿名类的构造器,但是可以使用匿名语句块实现
匿名类中的匿名语句块就会充当构造器的功能,只不过不能传递参数 2.10抽象方法:没有方法体的方法
抽象方法必须用abstract关键字声明
一个类如果含有抽象方法,就必须是抽象类。
抽象类作用:
1-不能直接调用自己的构造器生成对象,但是可以被子类的构造器使用super(...)调用,来开辟子类继承父类的属性空间
2-对未知的事物做一个预定:让子类必须帮我实现一个方法。
抽象类:一个天生的父类
注意:含有抽象方法的类一定是抽象类,但是抽象类中不一定必须含有抽象方法
(三)线程的概念
多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序。3.1线程的操作
生成线程类的方式,以及执行的方式:
继承thread,对象.start();实现runnable接口,new thread(对象).start();这两种方式有缺点:
1-优点直接继承thread中的方法,使用起来比较方便。缺点,不能再继承别的类,也就是一个纯粹的线程类。
2-优点实现runnable接口,不仅具备线程的功能,还可以继承别类,完成非线程的功能。缺点:没有现成的线程功能方法使用。线程对象的生命周期:
主线程:用来启动别的线程的线程,称为主线程,例如main线程就是mt和mt2的主线程
子线程:被别的线程启动的线程,称为子线程。例如mt、mt2就是main的子线程
线程的守护:随着主线程的结束,子线程跟着结束,称为子线程为守护线程。反之为非守护线程
设定守护线程: 子线程对象在start()之前,使用setdaemon(true)方法来设定。线程的调度
1-使线程暂时休眠 sleep(long time);2-使线程让步 2.1、非指定让步 thread.yield();注意:非指定让步不一定可以让出去。
3.2、指定让步 指定让给的线程对象.join();指定让给的线程对象.join(指定让出时间);线程同步:如果有多个线程在使用同一个资源对象时,让他们串行使用的方式。
线程同步方法:1-在资源对象上定义同步方法,当一个线程在使用本资源对象时,会在本对象上加锁。
如果这时另一个线程来访问这个对象,又发现需要使用同步方法时,本对象有被其他
线程加锁了,我们第二个线程需要等待第一个线程执行完毕后释放了对象锁,他才能继续执行。
注意:同步方法定义需要使用 synchronized 关键字修饰,同一时刻只能有一个线程执行这个对象的同步方法。
即使,别的线程执行这个对象的别的同步方法也不行。
一个对象如果有多个同步方法,同一时刻只能有一个同步方法被执行。如果要使用 wait()notifyall()来进行线程调度,需要两个以上的线程。下面是在oracle数据库中的学习内容:
(一)数据库打开分为三个阶段 :
1-nomount : 作用—维护数据库系统文件,2-mount:作用—维护用户文件,3-open:作用:进行数据访问,对数据做增、删、改、查
(二)sql语句的特点
1。综合统一: 集数据定义、数据操纵、数据管理的功能于一体,语言风格统一,可以独立完成数据库的全部操作。
2。高度非过程化——提出“做什么”而不是“怎么做” 面向集合的操作方式——结果是元组的集合 3。语言简洁,易学易用 只有7个动词(insert ,delete , update, select , drop, alter, create)
(三)注:需要管理员权限的用户来操作 1-创建用户:
create user 用户名 identified by 密码
注:新建的用户缺少权限,需要分配使用权限才能连接
grant connect,resource to 用户名(连接和数据资源使用权限)2-锁定用户: alter user 用户名 account lock;3-解锁用户:
alter user 用户名 account unlock;
(四)数据库体系结构:结构组件汇总
内存结构
系统全局区(sga):数据库缓冲区高速缓存、重做缓冲区以及各种池 程序全局区(pga)进程结构
用户进程和服务器进程 后台进程:smon、pmon、dbwn、ckpt、lgwr、arcn 等
存储结构逻辑:数据库、表空间、段、区和 oracle 块
物理:用于存储数据、参数、重做和操作系统块的文件 1.2.2实习成果
学习了java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习了sql的基础知识及正确的运用方法,和有关的技术。通过学习,提高了分析、判断和处理问题的能力,锻炼了自己的实际动手能力,增强子的团队协作意识,了解软件开啊的思考角度和主要流程。为毕业之后能够找到一份好工作奠定了基础。回顾实习的这段日子,从最初的新鲜感到后来的无不充实,从最初对自己缺乏信心,在原老师的悉心教导下有问必答,严谨认真又充满了亲和力,让我增添了信心,开始了认真的学习。1)基本输入输出语句 //屏幕输出
system.out.println(abc);system.out.print(abc);//对话框输出
joptionpane.showmessagedialog(null, test);//屏幕输入
scanner sn=new scanner(system.in);string info=sn.nextline();system.out.println(你好+info);//对话框输入
string name=joptionpane.showinputdialog(请输入你的姓名:);joptionpane.showmessagedialog(null, 你好+name);2)byte-->short-->int-->long-->float-->double 行。
循环:有限次重复一种操作1 定义循环变量2 判断循环条件 1满足第一个条件时,精度低的往精度高的转换自动进行,否则强制进 3 变更循环变量
3)方法覆盖的目的(原因):当我们子类继承父类的方法不适用时,需要方法的覆盖
方法的覆盖也称为方法的重写
方法重写注意类的访问规则的定义问题:
子类覆盖父类方法时,访问规则只能比父类的限定要小。或者一样。什么样的方法不能被覆盖:1-看不见的方法2-不能继承的方法
3.1final修饰的方法不能被覆盖。(因为final的方法是特殊意义上的拒绝继承)4)异常的分类: 1-运行时异常(未捕获异常):可以不使用try-catch来包含可能有问题的代码,出现这种异常系统自动捕获并提示
2-捕获异常:如果你调用了捕获异常发生的代码,即使不会出现异常,也必须使用try-catch来调用这个有异常风险的代码。
异常的再抛出:
在方法调用过程中,如果被调用的方法出现异常,它自己能处理就处理,如果处理不了会再抛出给调用我的方法。
再抛出分类: 1-显性再抛出:在方法声明的参数列表后以及方法体之间使用 throws 异常类 称为显性再抛出。
2-隐形再抛出:不使用 throws 异常类来进行异常的再抛出。只有运行时异常(未捕获异常)才能进行隐形抛出。
手动抛异常:在代码中使用 throw 异常对象
注意:覆盖一个显性抛出异常方法时,子类中的覆盖方法的显性异常声明可以是父类被覆盖异常的子类或者其本身,不能使用比父类显性抛出异常范围还大的异常类。(子类可以不显性再抛出,也就是默认出现的异常我自己子类方法能处理)5)异常处理机制:
1-我们把可能发生异常的代码,放到try{...}代码段中,然后在其后使用catch(可能出现的异常类<定义一个>异常对象来捕获可能出现的问题){提示出现的问题} 2-如果try代码段有一句出现异常,并抛出。则try代码段中其后的代码不执行。跳到catch去捕获异常。
3-异常捕获的catch代码段,如果没有捕获到try代码段抛出的异常对象,则整个程序崩溃了。
4-为了满足一个代码段的多种错误处理,允许有多个catch代码段。这些catch代码段将“从上到下”的顺序捕获try代码段抛出的异常对象,直到捕获到为止。一个try代码段后的多个catch代码段,最多只能有一个catch被执行
5-使用exception来作为catch的收尾工作,确保所有异常对象都能被捕获到。6-异常父类的catch代码段不能放到异常子类catch代码段之前
7-异常处理的最后使用finally代码段,是程序安全的最后一道屏障。无论出现什么情况finally代码段都执行。oracle数据库中 1)触发器的组成:
触发事件:即在何种情况下触发trigger;例如:insert, update, delete。
触发时间:即该trigger 是在触发事件发生之前(before)还是之后(after)触发,也就是触发事件和该trigger 的操作顺序。
触发器本身:即该trigger 被触发之后的目的和意图,正是触发器本身要做的事情。例如:pl/sql 块。
触发频率:说明触发器内定义的动作被执行的次数。即语句级(statement)触发器和行级(row)触发器。
语句级(statement)触发器:是指当某触发事件发生时,该触发器只执行一次;行级(row)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。
数据库触发器是存储在数据库中、根据发生的事件而执行的一种存储子程序。它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。该事件可以是一个ddl操作,如对象的创建、修改或删除;也可以是一个dml操作,如表或视图上的一个insert、update或delete操作;也可以是系统事件,如数据库启动和关闭、登录和登出;还可以是一个用户事件,如模式登录和登出。2)游标
游标是构件在pl/sql中,用来查询数据库,获取记录集合或者结果集合的指针,它可以让开发者一次访问一行结果集。oracle中游标的分类:显示游标、隐式游标。显示游标是早期定义的用于处理多行结果集的游标。隐式游标是由oracle定义的,它是和单行select„into语句,显示游标的使用:打开游标、将结果集取到pl/sql记录或者各个pl/sql变量中、关闭游标
3)游标的使用
定义了以后,在使用时:open—fetch—close insert语句、update和delete语句关联在一起使用的。4)参数化游标
显示游标可以带参数,并能为特定的参数返回数据集。
可以在游标名称后面,用括号括起参数的名称和数据类型来定义游标的参数。游标变量就是一个pl/sql变量,可以在运行时针对不同的查询使用该变量。同一个变量能指向不同的工作区。
使用游标变量的原因:
1、它能在存储子程序之间传递结果集。
2、在运行时一个游标变能与多个查询相关联。5)游标变量:
1、它能在存储子程序之间传递结果集。
通过游标变量,只要有游标变量指向某工作区,用户就能够通过该游标变量取到该工作区的内容。
2、在运行时一个游标变能与多个查询相关联。
使用游标变量:
1、分配内存
2、打开游标变量
3、把结果集取到pl/sql记录或者单独的pl/sql变量中
4、关闭游标变量
6)使用游标表达式的原因:
1、可以避免声明和使用多个游标
2、避免了在sql select语句中使用复杂链接
3、可以把游标表达式作为pl/sql游标的一部分使用。在能使用动态sql的地方,就能使用游标表达式并把值取到ref cursor变量中。7)分析函数使用实例
问题:给出各部门销售代表工资最高的前3名。
该问题具有二义性。
这是因为有重复的值,即可能有4个人都赚同样的工资,那该怎么办? 可以给出3种合理的解释:
1、给出销售人员工资最高的前3名;也就是说,查找唯一的工资总数的集合,对他们进行排序,得到最大的前3名
2、最多给出3个工资最高的人,如果碰巧有4个人工资最高,答案是没有任何行记录;如果有2个人赚最高的工资,有2个人赚同样次高的工资,答案是仅有2行记录(2个最高的)。
3、对销售人员按照工资从高到低排列,给出前3行记录,如果一个部门少于3个人,则将返回少于3个记录。
通过学习了java和oracle做一些简单程序,如银行存取款系统、扫雷、画板等程序。
二 实习心得
通过这一个多月的实习,给我的触动很大。在信息时代,学习是不断地汲取新信息。作为一名即将毕业的大学生更应该把学习作为保持今后工作积极性的重要途径。在今后的学习、工作和生活中,我将继续学习,深入实践,不断提升自我。
通过实习,我初步学习了java se,oracle数据库的有关知识,学习了如何用java连接数据库,对于一些简单的小问题,能够动手排除。实习是个人能力的锻炼。我个人认为,这次实习对于我是非常有意义的,对我个人的影响也比较大。通过这次实习,我得到了一次全面系统的锻炼机会,增长了不少知识,学到了许多知识和技能。“在大学里学的不是知识,而是一种叫做自学能力”参加实习后才真正体会到这句话的含义。在这个信息化的时代,我们必须在实际项目勤于动手慢慢琢磨,不断学习不断积累,遇到不懂的地方,自己先想办法解决,实际不行可以虚心请教他认,而没有自学能力的人迟早会被社会和企业所淘汰。
参考文献
[1] 计算机丛书编委会.frontpage 2000 网页制作实用教程[m].北京:希望电子出版社,2002.[2] 李劲.asp数据库程序设计[j].上海:计算机研究,2001,(4):14-16.[3] liu guangyuan,yu juegang, a fast learning algorithm via a hybrid approach[j].journal of uest of china, vol.27, no.3, jun.2000.[4] /(台州学院计算机基础教学网)[5] java面向对象编程基础教程 作 者:信必优技术学院研发部 出版社: 清华大学出版社 出版时间: 2009-7-1 isbn: 9787302203193 [6] java编程思想(第4版)作者:(美)埃克尔 著,陈昊鹏 译 isbn编号: 9787111213826 出版社: 机械工业出版社 [7] java从入门到精通(第2版)isbn编号: 9787302227465 出版时间: 2010-7-1 出版社: 清华大学出版社 作者: 李钟尉,周小彤,陈丹丹 等编著 副书名: 软件开发视频大讲堂
[8]java ee实用教程 isbn编号: 9787121097270 出版时间: 2009-11-1 出版社: 电子工业出版社 作者: 郑阿奇 主编 [9] 产品名称:java 2核心技术 卷ⅰ isbn编号: 9787111125433 出版社: 机械工业出版社 作者: [美]霍斯特曼等 著,程峰等 译
第二篇:java学习报告
经过一个学期的学习,Java的课程已经结束了。可是我知道,学习java的路上,我们才刚刚起步。学Java之前我听许多人说Java很难,学了之后我感觉Java确实不容易,想学好它并非易事。
学习java天赋是很重要,但不是绝对的至少我是这么认为的!我想说的是我认为态度决定一切,Java的J2SE是Java的核心基础,学好SE部分对Java后期的深入学习非常重要。在SE部分,有许多的知识要点:类的概念、类的继承、多态、接口、面向对象等等。对于这一阶段的学习,除了课堂上的听讲,最最重要的是代码的实践,通过编写代码来理解上述所说的知识点的,将抽象的东西变成可以被你理解,应用的工具,熟能生巧嘛。
其次,学习的方法也很重要!好的方法会事半功倍哦!例如在编写代码的过程中可能会有这样那样的问题,遇到问题请教别人是一种不错的方法,但是,我认为最好不要马上请教身边的高手。自己先试着想办法解决,分析问题,对症下药,让自己有解决问题的成就感!但也不要在某个问题上发费太多的时间和精力,那样会使你产生挫败感,丧失学习的兴趣。在适当的时候请教高手,你会受益良多!
再次,对于资源的使用,也是提高学习效率的方式。SUN公司提供了专门的API文档,供开发者学习JAVA,遇到没见过的类、接口或者某个方法,就可以通过查询API文档获得帮助!不要忽视API文档,它是你学习JAVA很重要的帮手!网络也是另一种宝贵的资源,你可以下载一些JAVA的视频教程来复习和巩固知识、上网查询你解决不了的问题、到相关的论坛转转,发表你未解决的问题,听听高手的想法!
其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了迷雾。刚开始学习循环时,我觉得那一块很不熟悉,做题时,思路半天才理出来。经过一段时间的练习,我渐渐的走出了第一个迷雾。但是到了第六章,我彻底晕了,看书看得也一知半解晕晕乎乎的。类与对象是在学了第七、八章后弄清的。到了最后一章,学到字符串时,传递参数真让我晕啊,然后我又是练习,最后略微弄明白了点。我总结了我学Java的特点:先是不懂,后明白,再次不懂,又明白,又一次晕,最后弄清。经过三起三落,经过几个迷雾之后,我对Java也有了更为深入的了解,就学会了Java。
我觉得把Java学会的关键一点就是坚持练习。学习Java时每天必须保证一定量的练习,我们老师也说学习编程语言没有捷径可走。真的,只有每天反复操作了,经常写代码了,我们在遇到问题时才有一定的思路。欲速则不达,学习编程语言需要一个比较漫长的阶段,不能一步登天,这需要一个过程,在这个过程中慢慢积累经验,扎实基础。不要以为写出了一个简单的小程序,就认为自己已经学的很好了,这只不过是在你学习编程过程中一个小小的实践。不要满足于现状,要不断完善自己的知识体系,善于总结实践经验。要端正自己的学习态度,是主动去学,而不是被动!提高自学能力。学习编程的秘诀是:编程、编程、再编程。不仅要多实践,而且要快实践。
我们在看书的时候,不要等到完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让更快更牢固的掌握知识点。程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。举个例子,我们都编过Hello World,一开始很多同学不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?我刚也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么main方法是这样定义的了。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。
当然学习环境对学习效率也很重要。在学习的这段日子,我感触很多,我们班的学习氛围还不错,有时候大家一起讨论、学习、共同进步,有问题也可以询问助教,比自己一个人闭门造车来的更有效果!讲师在授课之余,还传授很多其他方面的知识,大大扩展了我们的见识,增加了学习的兴趣!
学习是一个日积月累的过程,只有从菜鸟做起,一步步的来,才能在学习JAVA的道路上留下你深深的脚印,在学习中享受!人之所以能,是相信能!同时在学习过程中应该注意的几点有:
1)首先是java环境的配置,对于已经习惯双击“setup”进行安装的我们来说,安装完毕后就可以使用软件了,但是java不是这样,安装完java jdk后需要对你所在的操作系统进行环境的配置,设置一些最最基本的环境运行变量。测试环境变量的配置是否正确。
2)添加你应用所需的功能扩展jar包。
3)配置好应用需要的dll动态链接库文件。
4)在项目建立初期进行输出打包测试,这样做的好处在于:应用软件的最终运行状态是软件需要发布,并可以在其他用户的计算机正确的运行,项目初期就进行输出、安装测试可以提早发现软件的非编码错误,另一点是将软件初期的GUI操作发布给用户,可以让用户提出一些宝贵的软件功能、界面上的整改意见,这样可以使软件更贴合用户的需求。
5)多多阅读相关知识点的英文资料,当然好的中文资料也是不可少的。
6)多多访问一些技术论坛,国内还是有一些不错的纯技术论坛的,在哪里你可以看到java的方方面面,及时更新自己的知识,“冲刷”自己的头脑是非常必要的,国外的技术论坛有时候需要翻墙才能访问,需要提前准备好翻墙的工具。不过我发现台湾的java论坛比国内的好,从版面的设置到人的参与性都比国内的要好,学习讨论的氛围也很浓厚。
7)多多写写问题总结,这样可以使自己加深对问题解决方法的理解,说不定哪天你会有更好的方法来解决问题。
8)多多学习别人的源代码,要知道社会发展到今天都是后人站在前人肩膀上作出来的成就,必须要清楚的知道现在的工作都是靠一群人开发才能完成的,学习别人的代码可以少走弯路,使自己更快的成长。
9)看一些技术的原理性东西,当然这个取决于你自己想从深层次的方面去应用技术还是泛泛的应用就行,每次都想快速的掌握他,虽然短时间里看起来很“繁荣”,但是当需要深入应用时就会发现心有余力而力不足,所以在适当的时间看一些技术原理性的东西是非常有必要的。
10)最后是一个个人习惯,在今天你打开计算机前或打开IDE前,先想好今天要完成哪些工作,昨天的问题解决了吗?如果没有是否有了新的思路?软件代码的备份也很重要。
学习java就是件耗时间的事儿,如果不肯投入自己的时间,根本不可能在短时间就把java给学好了。有时候只是很简单的想法,但是要付出的很多很多才能把我的想法给实现了,所以我就决定要好好的把这件事情给做好了。我相信我是能做好的。前提是我必须要放下其他的东西,不能和同学一起出去玩儿,不能看电影,不能在网上浪费时间,不能做的事情,实在是太多了,以前我认为自己是个意志不坚定的人,现在,就有一个机会来证明我自己不是那样的人,我能长久的坚持去做一件事情,而且不惧所遇到的困难。学习是一个很反复的过程,不断的出现错误,不断的调试,不断的迷茫,不断的清晰,这些都是必须要要经历的
第三篇:java学习
.如何学习Java?
3.1 Java学习路线
3.1.1 基础语法及Java原理基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得“真正”的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
3.1.2 OO思想的领悟掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是 CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是: ●调查收集需求。●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。●细化分析模型到设计模型。●用具体的技术去实现。●测试、部署、总结。
3.1.3 基本API的学习进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的“不需要重新发明轮子”。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4 特定API的学习Java介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟 悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。
3.1.5 开发工具的用法在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉 IDE了。程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder 占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的 Java IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓“柳暗花明又一村”。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。
3.1.6 学习软件工程 对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见“软件开发学习路线”小节。
3.2学习要点 确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,不要嫌我婆婆妈妈啊。
3.2.1勤查API文档当程序员编写好某些类,觉得很有成就感,想把它贡献给各位苦难的同行。这时候你要使用“Javadoc”工具(包含在JDK中)生成标准的Java DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份,除了菜鸟之外。J2SE DOC文档官方下载地址:http://Java.sun.com/j2se/1.5.0/download.jsp,你可以到google搜索CHM版本下载。也可以在线查看:http://Java.sun.com/j2se/1.5.0/docs/api/index.html。对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍。当需要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现,有的话就不必劳神费心了直接用就可以了,找不到的时候才考虑自己实现。使用步骤一般如下: ●找特定的包,包一般根据功能组织。●找需要使用类,类命名规范的话我们由类的名字可猜出一二。●选择构造器,大多数使用类的方式是创建对象。●选择你需要的方法。
3.2.2 查书/google->写代码测试->查看源代码->请教别人 当我们遇到问题的时候该如何解决?这时候不要急着问别人,太简单的问题,没经过思考的问题,别人会因此而瞧不起你。可以先找找书,到google中搜一下看看,绝大部分问题基本就解决了。而像“某些类/方法如何使用的问题”,DOC文档就是答案。对某些知识点有疑惑是,写代码测试一下,会给你留下深刻的印象。而有的问题,你可能需要直接看 API的源代码验证你的想法。万不得已才去请教别人。
3.2.3学习开源软件的设计思想 Java领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法。
3.2.4 规范的重要性 没有规矩,不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.xiexiebang.com下载JSRXXX规范,多读规范,这是最权威准确最新的教材。第二层含义是编程规范,如果你使用了大量的独特算法,富有个性的变量及方法的命名方式;同时,没给程序作注释,以显示你的编程功底是多么的深厚。这样的代码别人看起来像天书,要理解谈何容易,更不用说维护了,必然会被无情地扫入垃圾堆。Java编码规范到此查看或下载http://Java.sun.com/docs/codeconv/,中文的也有,啊,还要问我在哪,请参考3.2.2节。
3.2.5 不局限于Java 很不幸,很幸运,要学习的东西还有很多。不幸的是因为要学的东西太多且多变,没时间陪老婆家人或女朋友,导致身心疲惫,严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事,他们或她们需要付出很多才能达成心愿。Java不要孤立地去学习,需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识,用横向纵向的比较联想的方式去学习会更有效。如学习Java集合的时候找数据结构的书看看;学JDBC的时候复习数据库技术;采取的依然是“需要的时候再学”的原则。
4.结束语需要强调的是,学习软件开发确实有一定的难度,也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在Java神殿之外的朋友有所帮助的话,笔者也欣慰了。哈哈,怎么听起来老气横秋呀?没办法,在电脑的长期辐射之下,都快变成小老头了。最后奉劝各位程序员尤其是MM程序员,完成工作后赶快远离电脑,据《胡播乱报》报道,电脑辐射会在白皙的皮肤上面点缀一些小黑点,看起来鲜艳无比……
第四篇:JAVA学习
买本《java疯狂讲义》 或者 在网上下载下来看看主要看java语法部分和面向对象编程部分这些要速度过 接下来开始写一些小例子 从例子里面学习会更快例子差不多了就开始web方面的涉猎,先学struts->jsp->servlet->hibernate->spring学习javascript
第五篇:如何深入学习java
在开发领域的技术人员,只有不断地充电提高才能够让自己始终处于不败之地。技术日新月异,推陈出新,让技术人员目不暇接。我们都知道,java技术是目前最流行的编程语言,java入门很难简单,可是要想成为高手,拿到更高的工资,还需要深入学习,那么如何深入学习java?
Oracle的Java EE 6提供了三大新技术和更多丰富组件和强劲的特色功能,很先进、实用,并且容易掌握,绝对值得java程序员等技术人员深入学习,全面提升自身的核心竞争力。
Java EE 6的第一大新技术就是支持JAX-RS(JSR 311),JAX-RS是RESTful Web Services Java API的简写,Java EE 6包含了它的最新1.1版本,它可以让程序员迅速构建遵循REST(Representational State Transfer,表象化状态转变)风格软件架构的轻量级Web服务,它对于每个资源都使用全局引用标识符URI,并拥有直接通过HTTP传输数据的能力,可以使用标准的固定动词—GET,PUT,POST和DELETE等来操作这些资源。同时,JAX-RS为在Java中构建RESTful Web服务提供了标准化API,API还提供了注解、相关的类和接口,这使得在Java中创建RESTful Web服务变得简单。
Java EE 6的第二大新技术是它可以支持面向Java EE平台的上下文和依赖性注入-CDI(JSR 299),CDI是Context and Dependency Injection的简写,它是Java EE平台的Web层和企业层之间的一座桥梁。通过CDI,不仅可以让企业层通过诸如EJB和JPA等技术,对事务性资源提供强有力的支持。同时,通过CDI,使得Web层也能够支持事务,这样在Web应用程序中访问事务资源就更容易了。
支持Bean验证(JSR 303)是Java EE 6的第三大新技术,Bean验证提供了一个遵循JavaBean规范编写的Java类,它提供了标准验证框架,并可在应用程序的所有层之间共享,简化了验证,减少重复、错误和凌乱。
以上三种技术,就是深入学习java必备的,当然,强大的java不只这些,需要学习的还有很多,同时也需要连续的练习,这样才能成为真正的java高手。如何深入学习java
长沙java培训http:///