java学习报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA实习报告
摘要:古人有云:“纸上得来终觉浅,绝知此事要躬行”。

自从走进了大学,距离工作就不远了,学校为了拓展我们学生自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高我们的能力,以便在以后毕业后能真正走入社会,在学习通信专业知识三年之后,组织我们进行认识与生产实习。

认识实习是教学与生产实际相结合的重要实践性教学环节。

它不仅让我们学到了很多在课堂上根本就学不到的知识,还使我们开阔了视野,增长了见识。

生产实习是对我们进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。

,这有利于提高我们业务素质和政治素质。

为我们以后更好把所学的知识运用到实际工作中打下坚实的基础。

在认识与生产实习过程中,学校也以培养学生观察问题、解决问题和向生产实际学习的能力和方法为目标。

关键字:Java、Oracle数据库、对象与类、线程、触发器、游标
前言
随着计算机科学的迅速发展,计算机已深入到揉合社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们日常生活提供了很多方便。

如今程序设计的语言很多,再好的程序设计业要有一个比较完善、清晰的思路——算法。

为了编写一个好程序,必须分析待处理对象的特性以及各个处理对象之间的关系,以便能更好的解决问题。

一、主要实习内容
1.1实习目的
生活在这个信息化的时代,为了能够在编程方面有所突破,能够找到一份好的工作,就应该好好了解一些知识。

Java是由SUN Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。

用Java实现的HotJava 浏览器(支持Java Applet)显示了Java的魅力:跨平台、动态的web、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应用编程接口中有一个网络应用程序接口(),它提供了用于网络应用编程的类库,包括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、DBW n、CKPT、LGWR、ARC n等
存储结构
逻辑:数据库、表空间、段、区和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 定义循环变量2 判断循环条件
3 变更循环变量
3)方法覆盖的目的(原因):当我们子类继承父类的方法不适用时,需要方法的覆盖
方法的覆盖也称为方法的"重写"
方法重写注意类的访问规则的定义问题:
子类覆盖父类方法时,访问规则只能比父类的限定要小。

或者一样。

什么样的方法不能被覆盖:1- 看不见的方法2- 不能继承的方法
3.1 - static的方法不能被覆盖:因为static的属性和方法属于类级别的属性和方法,不能被继承。

(因为static的方法不能被继承)
3.2 - final修饰的方法不能被覆盖。

(因为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 出版社: 机械工业出版社作者: [美]霍斯特曼等著,程峰等译。

相关文档
最新文档